2016-12-17 6 views
0

Ich versuche, das erste Auftreten einer Variablen in einem Listenelement in einer Liste von Listen zu list.index. Zum Beispiel:Finden Sie das Indexlistenelement in einer Liste von Listen

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

Ich möchte wie etwas tun:

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

Bisher Ich versuche, dies mit dem folgenden Code zu erreichen:

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

Aber Ich würde gerne eine pythischere Lösung für mein Problem finden.

+0

Sie sollten Enumerate verwenden. – ebeneditos

Antwort

0

Sind Sie sicher, dass Sie die beste Datenstruktur verwenden? Kannst du dein Programm nicht so überdenken, dass es etwas kompetitiveres generiert? Solche verschachtelten Listen entweder anti-pythonic ...

Wie auch immer sind, warum ich mit Ihrem Code empfehlen würde, wie es next() und enumerate() zu verwenden ist:

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

Mein ganzer Code basiert auf dieser Datenstruktur, also sehr wenige Optionen jetzt. Wie auch immer, es hat für meinen Charme funktioniert. Ich werde auch auf enumerate() prüfen, für zukünftige Convience –

0

Eine Option wäre mit while Schleife über iter(my_list) sein :

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 

Ausgang:

>>> 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] 
Verwandte Themen