web-dev-qa-db-ja.com

リストのリストを別々の行に印刷する

リストのリストがあります:

a = [[1, 3, 4], [2, 5, 7]]

次の形式の出力が必要です。

1 3 4
2 5 7

私はそれを次の方法で試しましたが、出力は望ましい方法ではありません:

for i in a:
    for j in i:
        print(j, sep=' ')

出力:

1
3
4
2
5
7

代わりにendを使用するように印刷呼び出しを変更している間:

for i in a:
    for j in i:
        print(j, end = ' ')

出力:

1 3 4 2 5 7

何か案は?

7
skorada

元のリストのすべてのサブリストを反復処理し、_*_を使用してprint呼び出しでアンパックします。

_a = [[1, 3, 4], [2, 5, 7]]
for s in a:
    print(*s)
_

分離はデフォルトで_' '_に設定されているため、明示的に指定する必要はありません。これは印刷します:

_1 3 4
2 5 7
_

あなたのアプローチでは、すべてのサブリストのすべての要素を繰り返し、個別に印刷していました。 print(*s) you npackを使用して、印刷呼び出し内のリスト、これは本質的に次のように変換されます。

_print(1, 3, 4)  # for s = [1, 2, 3]
print(2, 5, 7)  # for s = [2, 5, 7]
_

一発ギャグ:

print('\n'.join(' '.join(map(str,sl)) for sl in l))

説明:
join関数を使用して、liststrに変換できます。

l = ['1','2','3']
' '.join(l) # will give you a next string: '1 2 3'
'.'.join(l) # and it will give you '1.2.3'

そのため、改行が必要な場合は、改行記号を使用する必要があります。
ただし、joinは文字列のリストのみを受け入れます。物事のリストを文字列のリストに変換するには、リスト内の各アイテムにstr関数を適用できます。

l = [1,2,3]
' '.join(map(str, l)) # will return string '1 2 3'

そして、リストslの各サブリストlにこの構造を適用します

11
ailin

あなたはこれを行うことができます:

>>> lst = [[1, 3, 4], [2, 5, 7]]
>>> for sublst in lst:
...     for item in sublst:
...             print item,        # note the ending ','
...     print                      # print a newline
... 
1 3 4
2 5 7
2
nalzok
def print_list(s):
    for i in range(len(s)):
        if isinstance(s[i],list):
            k=s[i]
            print_list(k)
        else:
            print(s[i])

s=[[1,2,[3,4,[5,6]],7,8]]
print_list(s)

リスト内のリスト内にリストを入力することができます...

0
Vinit Pillai