2010-12-06 17 views
0

list.index(x)のため、値がxの最初の項目のリスト内のインデックスのみが返されます。リスト内の同じ値のすべてのインデックスを返す方法はありますか?Python:リスト内の同じ値のインデックス

index_of_A_3 = [1, 2, 3] 

任意の提案を、してください:私は返すようにしたい

mylist = [(A,8), (A,3), (A,3), (A,3)] 

は例えば、私のようないくつかの同じ値を含むリストを持っています。どうもありがとうございました。

答えて

4
mylist = [(A,8), (A,3), (A,3), (A,3)] 
def indices(mylist, value): 
    return [i for i,x in enumerate(mylist) if x==value] 

print indices(mylist, (A,3)) 
# [1, 2, 3] 
+0

ありがとうございました。 enumerate()についてもっと詳しく説明できますか? – Protocole

+0

@Protocole http://docs.python.org/library/functions.html#enumerate –

+1

'enumerate'は引数として単一のiterableをとり、値が元のインデックスのタプルと要素である新しいイテレータを返します繰り返し可能です。例は、ボリュームを話します: 'list(enumerate([" foo "、" bar "、" baz "]))== [(0、" foo ")、(1、" bar ")、(2、" baz " )] '。 – katrielalex

2

(A、3)を好きなものに置き換えるか、ラムダを使用してください。

[i for i in range(len(mylist)) if mylist[i]==(A,3)] 
+0

はどうもありがとうございました。 – Protocole

1

それはちょっと醜いだが:

index_of_A_3 = [i for i in range(len(mylist)) if mylist[i] == (A,3)] 
+0

ありがとうございます、あなたの答えはまったく同じKabie'sと同じです。 – Protocole

関連する問題