3 回答
TA贡献1829条经验 获得超7个赞
嗯 这里有一个关于列表理解的答案,但是它消失了。
这里:
[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。
TA贡献1798条经验 获得超3个赞
接下来呢?
print testlist.index(element)
如果不确定要查找的元素是否确实在列表中,则可以添加初步检查,例如
if element in testlist:
print testlist.index(element)
要么
print(testlist.index(element) if element in testlist else None)
或“ pythonic方式”,我不太喜欢它,因为代码不太清晰,但有时效率更高,
try:
print testlist.index(element)
except ValueError:
pass
TA贡献1788条经验 获得超4个赞
使用枚举:
testlist = [1,2,3,5,3,1,2,1,6]
for position, item in enumerate(testlist):
if item == 1:
print position
添加回答
举报