说我有这个清单
x = [1,2,3,1,5,1,8]
有没有办法找到1
列表中的每个索引?
当然。列表理解加枚举应该可以工作:
[i for i, z in enumerate(x) if z == 1]
和证明:
>>> x = [1, 2, 3, 1, 5, 1, 8]
>>> [i for i, z in enumerate(x) if z == 1]
[0, 3, 5]
提问者要求使用 的解决方案list.index
,所以这是一个这样的解决方案:
def ones(x):
matches = []
pos = 0
while True:
try:
pos = x.index(1, pos)
except ValueError:
break
matches.append(pos)
pos += 1
return matches
它比 mgilson 的解决方案更冗长,我认为它是更惯用的 Python。