list操作总结

list去重

问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。

1
2
3
4
5
[1,4,3,3,4,2,3,4,5,6,1]
lambda x,y:x if y in x else x + [y]
reduce(func, [[], ] + ids)

Out[7]: [1, 4, 3, 2, 5, 6]

取出列

1
2
3
4
5
6
7
8
>>> a
[[44, 54, 1], [1, 5, 0]]
>>> b = [x[-1] for x in a]
>>> b
[1, 0]
>>> b = [x[:-1] for x in a]
>>> b
[[44, 54], [1, 5]]

两个list按元素相加

只适用于Python2

1
2
3
4
5
6
7
8
l1 = [2,2,2,2]
l2 = [3,3,3,3]
prod = map(lambda (a,b):a*b, zip(l1,l2))
print prod
# [6, 6, 6, 6]
add = map(lambda (a,b):a+b, zip(l1,l2))
print add
# [5, 5, 5, 5]

两个list拼接

1
2
3
4
5
6
In [1]: one = [1,2,3]

In [2]: two = [4,5,6]

In [3]: one + two
Out[3]: [1, 2, 3, 4, 5, 6]

两个list一起打乱

1
2
3
4
import random
c = list(zip(a, b))
random.shuffle(c)
a[:], b[:] = zip(*c)

判断一个list是否为空

1
2
3
4
5
6
7
8
9
10
传统的方式:
if len(mylist):
# Do something with my list
else:
# The list is empty
由于一个空 list 本身等同于 False,所以可以直接:
if mylist:
# Do something with my list
else:
# The list is empty

声明不定长的list

1
centre_list = [0 for x in xrange(self.number_class)]

声明不定长的空list

1
2
devide_list = [[]]*2
[[], []]

但是这样的话,不能用append,如下:

1
2
3
4
In[14]: one[1].append('1')
In[15]: one
Out[15]:
[['1'], ['1'], ['1'], ['1'], ['1']]

但是可以赋值

1
2
3
4
In[22]: one[1] = [1,3]
In[23]: one
Out[23]:
[[], [1, 3], [], [], []]

这是因为list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何一个元素都会改变整个列表:

所以需要用另外一种方式进行创建多维数组,以免浅拷贝:

1
2
3
4
5
6
>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]

颠倒列表的item顺序

示例列表:

1
2
a_list = ['a','b','c','hello']:
a_list.reverse() //列表的item顺序将被从后到前重新排列,更改为['hello','c','b','a']

在list中查找元素

检索列表的值,四种方式:in、not in、count、index,后两种方式是列表的方法。示例列表:a_list = ['a','b','c','hello']

  • 判断值是否在列表中,in操作符:'a' in a_list //判断值a是否在列表中,并返回True或False

  • 判断值是否不在列表,not in操作符:'a' not in a_list //判断a是否不在列表中,并返回True或False

  • 统计指定值在列表中出现的次数,count方法:a_list.count('a') //返回a在列表中的出现的次数

  • 查看指定值在列表中的全部位置,index方法:a_list.index('a') //返回a在列表中每一次出现的位置,默认搜索整个列表
  • 查看指定值在列表中第一次出现的位置:a_list.index('a',0,3) //返回a在指定切片内第一次出现的位置
------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道