首页 > 其他 > 详细

迭代和列表生成式

时间:2020-12-01 12:29:46      阅读:32      评论:0      收藏:0      [点我收藏+]

当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

from collections.abc import Iterable
d = {‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
print(isinstance(d, Iterable))

如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身

for i, k in enumerate(d):
    print(i,k)
0 a
1 b
2 c

列表生成式

[x * x for x in range(1, 11) if x % 2 == 0]

还可以使用两层循环,可以生成全排列

>>>[m + n for m in ABC for n in XYZ]
[AX, AY, AZ, BX, BY, BZ, CX, CY, CZ]

列表生成式也可以使用两个变量来生成list

>>> d = {x: A, y: B, z: C }
>>> [k + = + v for k, v in d.items()]
[y=B, x=A, z=C]

在一个列表生成式中,for前面的if ... else是表达式,而for后面的if是过滤条件,不能带else

>>> [x if x % 2 == 0 else -x for x in range(1, 11)]
[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

 

迭代和列表生成式

原文:https://www.cnblogs.com/hustar/p/14067214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!