2016-05-03 6 views
-1

Ich habe eine Liste von Listen von Zeichenfolgen, und ich würde gerne durch den 2. Index in jeder Unterliste durchlaufen. Aber, anstatt jede Saite Beurteilung es jedes Zeichen jeder Saite prüft ... hier ist, was ich meine:Python - Iteriere durch Liste von Listenzeichenfolgen

Aktuelle Code:

fruit = [['bananna',"apple",'grape'],['ham',"sammy",'canada']]  
for l in range(len(fruit)): 
    for i in fruit[l][1]:  
     print i 

gewünschte Ausgabe:
Apfel
sammy

Stromausgang:
a
p
p
l
e
s
ein
m
m
y

Wirklich würde ich mit jeder Saite einige Maßnahmen ergreifen möchten. Suchen Sie nach dieser Zeichenfolge in einer anderen Liste, aber momentan scheint sie jedes Zeichen der Zeichenfolgen, die ich betrachten möchte, zu bewerten, anstatt die Zeichenfolge als ganzes ... nicht sicher warum?

Antwort

0

Lösung:

>>> for l in fruit: 
...  print(l[1]) 
... 
apple 
sammy 

Es funktioniert, weil die for Anweisung iterate over the elements of a list ermöglicht (kein Index erforderlich).

ursprüngliches Problem:

1 fruit = [['bananna',"apple",'grape'],['ham',"sammy",'canada']]  
2 for l in range(len(fruit)): 
3 for i in fruit[l][1]:  
4  print i 

Das Problem ist in Zeile 3:

  • fruit[l] ist eine der Unterlisten (z.B. ['banana', 'apple', 'grape']).
  • fruit[l][1] ist der zweite Artikel in dieser Liste().
  • for i in fruit[l][1]iterates over the string(), die jedes Zeichen abgreift.
+0

Das funktioniert ... was passiert mit meiner Methode? –

+0

Strings sind in Python iterierbar. Was passiert, ist, dass für i in fruit [l] [1] über jedes Zeichen in der zweiten Zeichenfolge in jeder Unterliste iteriert wird. –

+0

Während dieser Code die Frage beantworten kann, würde die Bereitstellung eines zusätzlichen Kontexts bezüglich der Frage, warum und/oder wie er die Frage beantwortet, seinen langfristigen Wert signifikant verbessern. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. – CodeMouse92

3

Was Sie tun:

for l in range(len(fruit)): #you have the inner_loops in each iteration 

    for i in fruit[l][1]: # You already have what you want in fruit[l[1] 

     #you are now getting charcter by character from each value 

Was tun sollten:

einfach eine Schleife überspringen. Und es ist mehr pythonisch, nach Wert zu iterieren, nicht nach Index.

fruit = [['bananna',"apple",'grape'],['ham',"sammy",'canada']]  
for l in fruit:  
     print l[1] 
Verwandte Themen