2016-10-30 12 views
0

それぞれ2つのリストから項目を印刷したいと思います。私は以下のようにコードを書いた:ネストされたforループのpython

for i in list_a: 
    for j in list_b: 
    print(str(i) + str(j)) 

理想的な結果は、「A1 + B1」、「A2 + B2」list_b中などしかし、唯一のフィールド上の行は最後の項目になります。印刷文をさらにインデントしたとき:

for i in list_a: 
    for j in list_b: 
     print(str(i) + str(j)) 

結果が正しくないようです。私はこれが本当に基本的なループの質問であることを知っていますが、私は出力がどのように違うのか非常に混乱しています。

+0

'list_a'と' list_b'のサンプル値とそれらの結果を得ることができますか? – Mureinik

+1

しかし、最初のコードブロックでは構文エラーが発生しますか?あなたは明確にしていただけますか? – idjaw

+1

'i、j for zip(list_a、list_b):print(i + j)' – Mathias711

答えて

4

zipの使用はいかがですか?

for a, b in zip(list_a, list_b): 
    print('%s + %s' % (a, b)) 

ジップ例えば、タプルの中に2つの以上のリストをマージします。:

zip([1, 2, 3], [4, 5, 6]) # [(1, 4), (2, 5), (3, 6)] 

あなたがprint(a + b)を行う際にも、あなたは単に連結を意味し、一緒に文字列を追加します。例えば。 a"a"で、b"b"の場合、a + b"ab"で、"a + b"ではなく、

1

なぜこのコードが機能しないのか誰も説明していないので、別の回答を追加します。これはOPが実際に探していたものです。

ソリューション1:(list_bコードブロック内の何もないとして、何が各ステップのために起こりません)

for i in list_a: 
    #This indentation is inside 'i' loop 
    for j in list_b: 
      #This indentation is inside 'j' loop 
    print(str(i) + str(j)) 

がTHEN list_aをステップ実行し、すべての反復のために、list_bのすべてのステップスルーます印刷するので、ilist_aに、jをの最後の項目の番号にして印刷します。

空のコードブロックがあるので、このコードはおそらく、とにかく実行されず、コンパイラはおそらくIndentationError

ソリューション2とそれを拾うだろうが:

for i in list_a: 
    for j in list_b: 
     print(str(i) + str(j)) 

はステップスルーますlist_aのすべてと、各要素について、list_bのすべてを実行すると、A1B1A1B2A1B3などとなります。

好ましい解決

溶液をthis answerが@Pavlins答えと本質的に同じ溶液で、うまくカバー同じ速度で、同時に両方のリストをステップすることです。

関連する問題