所以我有一个for循环。
>>> row = [5, 2, 5, 4, 2, 2, 5, 5, 5, 2]
>>> for i in row:
if i == 5:
print(row.index(i))
if i == 2:
print(row.index(i))
输出
0
1
0
1
1
0
0
0
1
我想得到:0 1 2 4 5 6 7 8 9
。
换句话说,我想得到i
我正在for
循环中看到的{{1}}的索引,如果它是= 5或2 ...任何简单的方法吗?< / p>
答案 0 :(得分:7)
使用enumerate()
function生成正在运行的索引:
for index, i in enumerate(row):
if i == 5:
print(index)
if i == 2:
print(index)
或更简单:
for index, i in enumerate(row):
if i in (2, 5):
print(index)
答案 1 :(得分:1)
为了完整起见,如果出于某种原因不想使用enumerate
,则可以选择其他方式:
row = [5, 2, 5, 4, 2, 2, 5, 5, 5, 2]
indices = filter(lambda idx: row[idx] in (5,2), xrange(len(row)))
# [0, 1, 2, 4, 5, 6, 7, 8, 9]
或者作为list-comp:
indices = [idx for idx in xrange(len(row)) if row[idx] in (5, 2)]