2016-12-17 22 views
0

リストのリスト内のリスト要素に変数の最初の出現をlist.indexしようとしています。たとえば :、私は次のコードでこれを達成しようとしているこれまでのところリストのリスト内のインデックスリスト要素を見つける

index = myList.index((0,0)) 
myList[index] : [[(0,0),(1,1)],'add',10] 

myList = [[[(0,0),(1,1)],'add',10],[[(0,0),(1,1)],'add',10] . . . ] 

は、私のような何かをしたいと思います

i = 0 
for cage in myList: 
    if cage[0][0] == A: 
     print('Found') 
     break 
    i += 1 
print(self.Cages[i]) 

しかし、 、私は私の問題のpythonic解決策を見つけるのが大好きです。

+0

列挙型を使用する必要があります。 – ebeneditos

答えて

0

あなたは最高のデータ構造を使用していますか?より強力なものを生成するようにプログラムを再考することはできませんか?このようなネストされたリストは、抗ニシキヘビ...とにかく

いずれかであり、それはnext()enumerate()を使用することであると私はあなたのコードでrecommandする理由:

index = next(i for i, x in enumerate(myList) if x[0][0] == A) 
+0

私のコード全体はこのデータ構造に基づいているので、今のオプションはほとんどありません。とにかく、それは私のような魅力のために働いた。私はenumerate()も将来のconvienceのためにチェックします –

0

オプションはiter(my_list)をループにwhileを使用することになり:

my_list = [[[(0,0),(1,1)],'add',10],[[(0,0),(1,1)],'add',10]] 

my_iterator = iter(my_list) 

item = next(my_iterator) 
while (0, 0) not in item[0]: 
    item = next(my_iterator) 

print item 

出力:

>>> my_list = [[[(2,2),(1,1)],'add',10], [[(0,0),(1,1)],'add',10], [[(3,3),(1,1)],'add',10]] 
>>> 
>>> my_iterator = iter(my_list) 
>>> 
>>> item = next(my_iterator) 
>>> while (0, 0) not in item[0]: 
...  item = next(my_iterator) 
... 
>>> print item 
[[(0, 0), (1, 1)], 'add', 10] 
関連する問題