A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
次の形式のA
を印刷するように最善を尽くしています。
1 2 3
2 3 4
4 5 6
それは別の行にありますが、私は別の行のすべての要素なしではそうすることができません。これはこれまでの私のコードです:
for r in A:
for t in r:
print(t,)
print
これは私の出力です:
1
2
3
2
3
4
4
5
6
それは本当に単純なようです、そして私は小さな変更がそれをするだろうと思います。ありがとう!
単純なforループと" ".join()
を使用して、ネストされたリスト内の各int
をmap()
を使用してstr
にマッピングします。
例:
_>>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
... print(" ".join(map(str, xs)))
...
1 2 3
4 5 6
7 8 9 10
_
ここでの違いは、任意の長さの内部リストをサポートできることです。
例が期待どおりに機能しなかった理由は、内部ループがサブリストの各要素を反復処理しているためです。
_for r in A: # r = [1, 2, 3]
for t in r: # t = 1 (on first iteration)
print(t,)
print
_
また、print()
は、使用しない限り、デフォルトで末尾に改行文字を出力します。print(end="")
Python 2.x _print t,
_は機能します。例:
_>>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
... for x in xs:
... print x,
... print
...
1 2 3
4 5 6
7 8 9 10
_
しかし、print(x,)
は意図したとおりに機能しません。 Python 2.xまたは3.x
方法-1:
リスト内包表記と.join()
演算子を使用できます。
>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
>>> for item in my_list:
print ' '.join(str(x) for x in item)
1 2 3
2 3 4
4 5 6
方法2:
>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
>>> for item in my_list:
for x in item:
print x,
print
1 2 3
2 3 4
4 5 6
カンマ付きの内部print
は、内部リストの要素が1行で印刷されることを保証します。外側のprint
は、次の内側のリストについて、次の行に出力されるようにします。
for r in A:
print '%d %d %d' % Tuple(r)
同じ質問にJimFasarakis Hilliardが リストのリストを別々の行に印刷 で回答しました。
Python 3.xでは次を使用できます:
A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
for i in A:
print(*i)
そして、対応する出力は次のとおりです。
1 2 3
2 3 4
4 5 6
末尾にカンマを付けないprint
は、改行文字を出力します。
for r in A:
for t in r:
print t,
print
Python 3.x:
print(*('{} {} {}'.format(*r) for r in A), sep='\n')
または:
print(*('%d %d %d' % Tuple(r) for r in A), sep='\n')
そうでない場合は、__future__
モジュールからPython 3.xの印刷関数をインポートできます。
for [a,b,c] in A:
print(a,b,c)
これは役立つかもしれません。ただし、リスト内の要素の数が多い場合、またはネストされたリスト内の要素が可変である場合、これは機能しません。以下のコードは、ネストされた行のすべての要素を1行で出力します。
for b in A:
for p in b:
print(p,end=" ")
print()