python中enumerate用法、zip用法:并行遍历、集合的使用及特点

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

python中enumerate用法

1、使用场景

当你使用for循环遍历时,你需要用到两个参数:

  • 遍历出的元素
  • 遍历元素的偏移值,也就是元素的下标

2、用法

enumerate函数返回一个生成器对象,此对象支持迭代协议,之后博文再做讨论。意思就是说调用函数后,会返回一个元组(index,value)。

S = [‘a’,‘b’,‘c’]
for (i,value) in enumerate(S):
	print(i, 'and', value)
>>>
0 and a
1 and b
2 and c

使用enumerate函数可以同时得出元素和元素的下标,省略了一些代码操作,比较方便。

python中zip用法:并行遍历

python中内置的zip函数可以让我们使用for来进行多个序列的遍历。例如:

L1 = [1,2,3,4]
L2 = [5,6,7,8]
lis = list(zip(L1,L2))
print(lis)
>>>[(1,5),(2,6),(3,7),(4,8)]

for (x,y) in zip(L1,L2):
	print(x,y,"=",x+y)
>>> 
1 5 = 6
2 6 = 8
3 7 = 10
...
...
...

上例1中,zip创建元组对存放到列表中。例2中使用for来遍历元组对。也就是说在循环中扫描了L1和L2。 这里我们初步认识了zip函数。我们更深入的来看zip:

  • zip可接受任何类型的序列(可迭代对象),包括文件类型。但需要注意的是,zip()中的两个参数都必须是相同的序列对象,要么都是列表,要么都是字符串等。
  • zip可以有两个以上的参数。比如:
L1 = [1,2,3,4]
L2 = [5,6,7,8]
L3 = [4,3,2,1]
list(zip(L1,L2,L3))
>>>[(1,5,4),(2,6,3),(3,7,2),(4,8,1)]
  • 当两个序列的参数长度不同时,zip以最短的序列来截断。比如:
L1 = [a,b,c]
L2 = [1,2,3,4]
list(zip(L1,L2))
>>>[(a,1),(b.2),(c,3)]
  • 可以使用zip构造字典
keys = ['name','age','job']
vals = ['ww',23,'student']
d = dict(zip(keys,vals))
>>>{'name' : 'ww', 'age' : 23, 'job' : 'student'}

python中集合的使用以及特点

1、应用一:去重

python中集合的其中一种作用是去除字符串或者列表中的重复元素。这一功能是十分有用的。比如: 在这里插入图片描述

输出为:

在这里插入图片描述

光知道这些是不够的,使用集合去重的时候有几个特性需要注意。 我们再来看上述代码,发现列表改为集合后里面的元素的顺序改变了,在大多数情况下,我们都想要集合的顺序和列表一样。所以读者可以看我另一篇博文 链接: python中如何去掉重复元素.

另外笔者发现,当对数字进行集合转换的时候,数字的顺序被自动排序了。请看: 在这里插入图片描述

输出为:

在这里插入图片描述

所以得出:

  • 处理字符串时,集合转换后,元素的排列顺序会发生变化;
  • 处理数字时,集合转换后,元素的顺便会自动排序;

猜你喜欢

转载自juejin.im/post/7112028933456920612