2009-10-23 11 views
6

Więc mam trzy listy:Czy w Pythonie mogę drukować 3 listy w kolejności według numeru indeksu?

['this', 'is', 'the', 'first', 'list'] 
[1, 2, 3, 4, 5] 
[0.01, 0.2, 0.3, 0.04, 0.05] 

Czy istnieje sposób, który pozwoliłby mi wydrukować wartości w tych listach w kolejności indeksu?

np.

this, 1, 0.01 (all items at list[0]) 
is, 2, 0.2 (all items at list[1]) 
the, 3, 0.3 (all items at list[2]) 
first, 4, 0.04 (all items at list[3]) 
list, 5, 0.05 (all items at list[4]) 

Liczba elementów w każdej listy zmienia każdym uruchomieniu skryptu, ale zawsze kończy się z tej samej liczby wartości w końcu. Tak, jeden raz, skrypt może utworzyć trzy tablice z 30 elementów, innym razem, może tworzyć tylko 15 wartości w każdym itd

Odpowiedz

9

Co jesteś prawdopodobnie szuka nazywa zip:

>>> x = ['this', 'is', 'the', 'first', 'list'] 
>>> y = [1, 2, 3, 4, 5] 
>>> z = [0.01, 0.2, 0.3, 0.04, 0.05] 
>>> zip(x,y,z) 
[('this', 1, 0.01), ('is', 2, 0.20000000000000001), ('the', 3, 0.29999999999999999), ('first', 4, 0.040000000000000001), ('list', 5, 0.050000000000000003)] 
>>> for (a,b,c) in zip(x,y,z): 
...  print a, b, c 
... 
this 1 0.01 
is 2 0.2 
the 3 0.3 
first 4 0.04 
list 5 0.05 
+1

Również należy wymienić: itertools.izip, który tworzy dla generatora wynik. –

+0

Dzięki! działa jak marzenie! Formaty ładnie i wszystko. –

3

Wpisz zip

for items in zip(L1, L2, L3): 
    print items 

items będzie krotka o wartości z każdej listy, w kolejności.

0
lists = (['this', 'is', 'the', 'first', 'list'], 
      [1, 2, 3, 4, 5], 
      [0.01, 0.2, 0.3, 0.04, 0.05]) 
print zip(*lists) 

zamki list razem i zatrzymuje się, gdy najkrótsza lista zabraknie elementów.

0

Jest to najbardziej oczywiste sposób (w NEWB Pythona), a tam jest prawdopodobnie lepszy sposób, ale tu idzie:

#Your list of lists. 
uberlist = (list1, list2, list3) 

#No sense in duplicating this definition multiple times. 
#Define it up front. 
uberRange = range(len(uberList)); 

#Since each will be the same length, you can use one range. 
for i in range(len(list1)): 
    # Iterate through the sub lists. 
    for j in uberRange: 
     #Output 
     print uberlist[ j ][ i ]; 
+0

Chociaż twoje rozwiązanie działa, zip jest bardziej pytoniczny (i krótszy). –

+0

Tak, nie jestem zaskoczony, że istnieje lepszy sposób. Patrzę na Pythona tylko przez kilka tygodni (jeśli tak), więc jestem pewien, że większość moich prób będzie nadal "na uboczu". – cwallenpoole

+0

Założę się również, że zip jest szybszy: moja odpowiedź została napisana w Pythonie, zip jest metodą wbudowaną. – cwallenpoole

Powiązane problemy