首页 > 其他学习 > python > python中list的常用操作
2017
09-15

python中list的常用操作

1>添加 :list.append(value),在列表末尾添加新的对象元素

2>list.insert(index,value):在指定的索引位置插入新的对象元素

3>list.extend(other_list):在列表末尾一次性追加另一个序列中的多个值

4>删除 :list.remove(value)(如果有多个,则删除第一个)

5>list.pop([index=-1]):删除一个元素(默认最后一个),并且返回该元素的值

6>list.count(value) :统计某个元素在列表中出现的次数

7>list.index(value[,start,end]):从列表中指定的索引范围找出某个值第一个匹配项的索引

8>list.reverse():反向排列列表中元素

9>list.sort([func][,key=None][,reverse=False]) :对列表进行排序,默认从小到大排序,list.sort(reverse=True)为从大到小排序

10>list.clear():清除列表中的所有元素,把列表变成一个空列表

11>list.copy():复制列表并返回复制的列表。和list[:]效果一样

range([x=1,]y[,z=1]) :生成一个从x开始(包含x)到y(不包含y)的步长为z的range对象,使用list(range())可以转换为列表。

列表的遍历:for x in [1,2,3]: print(x)

如果要对list实现类似下标循环怎么办?Python内置的enumerate(sequence, [start=0])函数用于将一个可遍历的数据对象(一个序列、迭代器或其他支持迭代对象)变成索引-元素对,start表示下标起始位置,默认为0。一般用在 for 循环当中。

seasons = ['A','B','C']

list(enumerate(seasons))

[(0, 'A'), (1, 'B'), (2, 'C')]

list(enumerate(seasons, start=1))

[(1, 'B'), (2, 'C')]

for i, value in enumerate(seasons):

print(i, value)

0 A

1 B

2 C

可以一次给多个变量赋值,如name,age,gender=[1,2,3],表示列表中的元素按顺序赋值给这三个变量。

all(list) :判断一个列表或者元组中的元素转换为bool是否都为true,有一个为 0、空、False 或者列表为空则返回false。

any(list) :判断一个列表或者元组中的元素转换为bool是否都是false,有一个为true则返回true。

filter(func or None,Iterable) :过滤函数,第二个参数为一个迭代对象,如果第一个参数为一个函数,则依次把迭代对象中的值放入函数运算,保留函数返回结果为True的迭代值组成的filter对象,如果第一个对象为None,则返回迭代对象中值为True的迭代值组成的filter对象,filter对象可以使用lise()方法转换为列表。

zip(list1,list2,listn) :把多个列表整合成一个由多个元组组成的zip对象,使用list(zip())转换为list,每个元组包含各个参数列表中的一个元素,如果参数列表中的元素个数不同,那么会取元素最少的那个列表为基准。

list1=['tom','jerry','lilei']

list2=[25,23,27]

list3=[172,165]

list(zip(list1,list2,list3)) :返回[('tom', 25, 172), ('jerry', 23, 165)]

map(func,list1,list2,listn)函数接收至少两个参数,第一个是函数,函数需要几个参数则后面传入对应数量的Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回,如果参数列表中的元素数量不同或传入的参数列表个数和定义的函数的形参个数不同会报错。

排序算法:Python内置的sorted()函数就可以对list进行排序:

sorted([36, 5, -12, 9, -21])

[-21, -12, 5, 9, 36]

sorted()还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

sorted([36, 5, -12, 9, -21], key=abs)

[5, 9, -12, -21, 36]

如果是字符串排序,默认情况下,是按照ASCII大小比较的,由于'Z' < 'a',大写字母Z会排在小写字母a的前面。

现在我们提出排序忽略大小写的要求,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能用一个key函数把字符串映射为忽略大小写排序即可。忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。

sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)

['about', 'bob', 'Credit', 'Zoo']

要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True

reduce(func,list),递归传递列表中的元素到func中,使用deduce()函数必须先引入模块from functools import reduce

这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,如reduce(lambda x,y:x+y,range(1,101))可以求出从1加到100的值。

但是如果要把序列[1, 3, 5, 7, 9]变换成整数13579,reduce就可以派上用场:

reduce(lambda x,y:x*10+y,[1, 3, 5, 7, 9])

这个例子本身没多大用处,但是,如果考虑到字符串str也是一个序列,配合map(),可以写出把str转换为int的函数:

def char2num(s):

return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]

def str2int(s):

return reduce(lambda x, y: x * 10 + y, map(char2num, s))

也就是说,假设Python没有提供int()函数,你完全可以自己写一个把字符串转化为整数的函数,而且只需要几行代码!

 

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。