我有一个清单是这样写的:
1、1、3、3、3、3、3、3、3、3、3、3、3、3、3、3、1、1、1、1、1、1、1
我想打印列表中值大于2的所有元素,但也打印列表中的位置,我可以使用以下命令打印元素:
for bonds in number_of_bonds:
if bonds >= 2:
print bonds但是,如果我使用enumerate,它将打印列表中的所有项,其位置如下:
(0, 1)
(1, 1)
(2, 3)等
那么,正确的方法是什么呢?
发布于 2013-03-05 19:17:44
lst = [1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1]
print [(i, e) for (i, e) in enumerate(lst) if e > 2]
[(2, 3),
(3, 3),
(4, 3),
(5, 3),
(6, 3),
(7, 3),
(8, 3),
(9, 3),
(10, 3),
(11, 3),
(12, 3),
(13, 3),
(14, 3),
(15, 3)]如果您的列表很大,更好的方法是通过()使用generator动态生成每个元素,而不是在内存中一次性生成所有元素:
result = ((i, e) for (i, e) in enumerate(lst) if e > 2)
for i in result:
print i然后输出将是:
(2, 3)
(3, 3)
(4, 3)
(5, 3)
(6, 3)
(7, 3)
(8, 3)
(9, 3)
(10, 3)
(11, 3)
(12, 3)
(13, 3)
(14, 3)
(15, 3)请注意,生成器只能读取一次,这意味着如果您再次遍历result,则不会打印任何内容。
https://stackoverflow.com/questions/15222365
复制相似问题