私はこのリストを持っていると言う
x = [1,2,3,1,5,1,8]
リストにあるすべてのインデックスを見つける方法はあり1
ますか?
もちろん。リスト内包と列挙は機能するはずです:
[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]
質問者はを使用して解決策を求めた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のソリューションよりもやや冗長です。