Python:在列表中搜索int

时间:2012-12-04 08:08:35

标签: python list search

说我有这个清单

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

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

2 个答案:

答案 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。