web-dev-qa-db-ja.com

ネストされたリストを1行ずつ出力します-Python

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

それは本当に単純なようです、そして私は小さな変更がそれをするだろうと思います。ありがとう!

6
quarters

単純なforループと" ".join()を使用して、ネストされたリスト内の各intmap()を使用して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

6
James Mills

方法-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は、次の内側のリストについて、次の行に出力されるようにします。

2
Rahul Gupta
for r in A:
    print '%d %d %d' % Tuple(r)
2
dbliss

同じ質問に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
1
J.S.

末尾にカンマを付けないprintは、改行文字を出力します。

for r in A:
    for t in r:
        print t,
    print
1
lanpa

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の印刷関数をインポートできます。

0
Shashank
for [a,b,c] in A:
   print(a,b,c)

これは役立つかもしれません。ただし、リスト内の要素の数が多い場合、またはネストされたリスト内の要素が可変である場合、これは機能しません。以下のコードは、ネストされた行のすべての要素を1行で出力します。

for b in A:
    for p in b:
         print(p,end=" ")
    print()
0
Kartik Kapgate