我正在迭代一个列表,如果它满足某个条件,我想打印出该项目的索引。我该怎么做?
例子:
testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
if item == 1:
print position
最佳答案
嗯。这里有一个带有列表理解的答案,但它消失了。
这里:
[i for i,x in enumerate(testlist) if x == 1]
例子:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
更新:
好的,你想要一个生成器表达式,我们将有一个生成器表达式。这是列表推导,在一个 for 循环中:
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
现在我们将构建一个生成器...
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
很巧妙,我们可以将它分配给一个变量,然后从那里使用它...
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
想想我曾经写过 FORTRAN。
https://stackoverflow.com/questions/364621/