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ので、そのような解決策の1つを次に示します。

def ones(x):
    matches = []
    pos = 0
    while True:
        try:
            pos = x.index(1, pos)
        except ValueError:
            break
        matches.append(pos)
        pos += 1
    return matches

これは、私がより慣用的なPythonであると考えるmgilsonのソリューションよりもやや冗長です。

于 2012-12-04T09:06:50.887 に答える