索引for循环中的当前值?蟒蛇

时间:2014-03-08 09:23:01

标签: python

所以我有一个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>

2 个答案:

答案 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)]