2009-10-23 55 views
6

だから私は3つのリストを持っている:Pythonでは、3つのリストをインデックス番号順に印刷できますか?

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

は、私は、インデックス順にこれらのリストの値を印刷できるようになる方法はありますか?

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]) 

各リスト内の項目の数は、スクリプトの実行ごとに異なりますが、最終的に常に同じ数の値で終わります。だから、一度は、スクリプトは30項目、別の時間に3つのアレイを作成することができ、それは、それぞれわずか15値を作成することができ、等

答えて

9

おそらく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

も言及される:itertools.izipを、それがために発電機を作成します結果。 –

+0

ありがとう!魅力のように働く!きれいにフォーマットします。 –

3

使用zip

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

items値を持つタプルであろう各リストから、順番に。

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) 

は一緒にリストをzip圧縮して停止します。

0

これは、(Pythonの初心者くさいに)最もすぐに明白な方法であり、そこに良い方法はありそうですが、ここに行く:

#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

あなたの解決策は機能しますが、zipはより多くのpythonic(およびより短い)です。 –

+0

さて、もっと良い方法があるのは驚きではありません。私はPythonを数週間見てきましたが(そうであれば)、私の試みのほとんどはまだまだ "長い道のり"であると確信しています。 – cwallenpoole

+0

私はまた、ジップがより速いことを賭けるでしょう:私の答えはPythonで書かれました.zipはビルドインメソッドです。 – cwallenpoole

関連する問題