web-dev-qa-db-fra.com

Imprimer la liste des listes sur des lignes séparées

J'ai une liste de listes:

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

Je veux la sortie au format suivant:

1 3 4
2 5 7

Je l'ai essayé de la manière suivante, mais les sorties ne sont pas de la manière souhaitée:

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

Les sorties:

1
3
4
2
5
7

Lors de la modification de l'appel d'impression pour utiliser end à la place:

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

Les sorties:

1 3 4 2 5 7

Des idées?

7
skorada

Parcourez chaque sous-liste de votre liste d'origine et décompressez-la dans l'appel d'impression avec *:

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

La séparation est par défaut définie sur ' ' Il n'est donc pas nécessaire de la fournir explicitement. Cela imprime:

1 3 4
2 5 7

Dans votre approche, vous itériez chaque élément de chaque sous-liste et l'imprimiez individuellement. En utilisant print(*s) vous décompressez la liste à l'intérieur de l'appel d'impression, cela se traduit essentiellement par:

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

bon mot:

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

explication:
vous pouvez convertir list en str en utilisant la fonction de jointure:

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'

donc, si vous voulez des sauts de ligne, vous devez utiliser un nouveau symbole de ligne.
Mais join n'accepte que la liste des chaînes. Pour convertir une liste de choses en liste de chaînes, vous pouvez appliquer la fonction str pour chaque élément de la liste:

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

Et nous appliquons cette construction pour chaque sous-liste sl dans la liste l

11
ailin

Tu peux le faire:

>>> 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)

vous pouvez entrer des listes dans des listes dans des listes ..... et pourtant tout sera imprimé comme vous vous y attendez.

0
Vinit Pillai