Python基础——一些关于迭代、简单推导及工具函数(zip, enumerate)的技巧

并行迭代(zip):

zip:拉链

同时迭代两个序列,可使用内置函数zip()

>>> aa = ['a','b','c','d']
>>> bb = [1,2,3,4]
>>> for a,b in zip(aa,bb):
... 	print(a,b)
... 
a 1
b 2
c 3
d 4

zip也可以缝合元素数不同的两个序列,取较短的序列元素数

>>> list(zip(range(5), range(10)))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

当然,zip也不局限于两个序列,可以多个序列并行迭代

>>> list(zip(range(5), range(7), range(6)))
[(0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]

迭代获取索引(enumerate):

enumerate:枚举

获取迭代对象同时获取索引:

>>> lst = list("hello")
>>> for i, s in enumerate(lst):
... 	if s == 'l':
... 		print(i,s)
... 
2 l
3 l

简单推导:

类似for循环,后面也可以跟if条件:

>>> [ pow(x,2) for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [pow(x,2) for x in range(10) if x%3 == 0]   # 可被3整除的数的平方
[0, 9, 36, 81]

可以用多个for部分,及x符合条件的每一个与y符合条件的每一个,做笛卡尔积

>>> ['{},{}'.format(x,y) for x in range(5) for y in range(10) if y%3 == 0]
['0,0', '0,3', '0,6', '0,9', '1,0', '1,3', '1,6', '1,9', '2,0', '2,3', '2,6', '2,9', '3,0', '3,3', '3,6', '3,9', '4,0', '4,3', '4,6', '4,9']

简单推导用于构建字典的实例:

>>> squares = {i : '{} squared is {}'.format(i, i**2) for i in range(5)}
>>> squares
{0: '0 squared is 0', 1: '1 squared is 1', 2: '2 squared is 4', 3: '3 squared is 9', 4: '4 squared is 16'}
>>> squares[2]
'2 squared is 4'
发布了52 篇原创文章 · 获赞 21 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zhr1030635594/article/details/99963960
今日推荐