说我有这个清单
x = [1,2,3,1,5,1,8]
有没有办法找到列表中1
的每个索引?
答案 0 :(得分:13)
不确定。列表理解加上enumerate应该有效:
[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]
答案 1 :(得分:2)
提问者要求使用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。