3

说我有这个清单

x = [1,2,3,1,5,1,8]

有没有办法找到1列表中的每个索引?

4

2 回答 2

13

当然。列表理解加枚举应该可以工作:

[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]
于 2012-12-04T08:10:13.973 回答
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。

于 2012-12-04T09:06:50.887 回答