2016-10-14 13 views
-1

これは最良のコーディング方法に関する質問です。未知の長さのリストを設定しなければならないと仮定します。通常私はちょうどmyList = []でリストを初期化しますが、これはこれを行う貧弱な方法だと思います。私は、多くの場合、次のようになり、コードの塊で終わる:Pythonで動的リストを初期化する最もクリーンな方法は何ですか?

list1 = [] 
list2 = [] 
list3 = [] 

for a,b,c in zip(x,y,z): 
    list1.append(a) 
    list2.append(b) 
    list3.append(c) 

私は、彼らがそうであるように、実際にあなただけのx,y,zを使用することができ、一例では、あなたが正しい長さに、このリストを初期化することができます実現しています。私の質問は、あなたが必ずしもリストの長さを知らない状況に関するものです。私の意見では、このリストを初期化するために3行を使わなければならないのは厄介です。あなたは何をしていますか?入力をありがとう!巧妙な何のために

lol = [[], [], []] 
for items in zip(x, y, z): 
    for i, item in enumerate(items): 
     lol[i].append(item) 
+0

なぜかわいそうが何をしていること? *ほとんどのリストの使用は、可変数の項目を扱うことです。 –

+0

あなたは 'zip'にいくつのリストが渡されているのか分かりませんか? – chepner

+0

いいえ、例として、リストを初期化するために3行のコードが必要な例を示しました。私はリストが可変数のアイテムを保持するのに使用されていることを理解しています。もっとクリーンな方法で初期化する方法があるのだろうかと思っていました。 – eeScott

答えて

1

はリストのリストを使用し

list1 = list(x) 
list2 = list(y) 
list3 = list(z) 
+0

または単に 'lol = [x [:]、y [:]、z [:]]' ..を使用してください。 –

+1

ポイントは特定の問題を解決するものではありませんでした(eeScottは質問で、 'x、y、z'を使います)、複数のリストを扱うパターンを表示します。 – kindall

+0

あなたの提案は単なるリストのリストにすぎませんか?それは興味深い考えです。同じように、あなたは 'a、b、c = []、[]、[]'を行うことができると思います。 – eeScott

2

必要がありません:

+0

それは私が尋ねたものではありません。 – eeScott

+0

Ah。何を聞いたの? –

+0

あなたが求めていることははっきりしていません。これはあなたの現在のループと同じことをより明確かつ効率的に行うだけです。 – chepner

関連する問題