Étant donné un tableau de tableau A défini comme

A = [[1, 2, 3, 4], [10, 20, 30, 40], [100, 200, 300, 400]],

Si la fonction d'impression est appelée

for i in range(0,3):
    print A[i]

Ce qui suit est la sortie

[1, 2, 3, 4]
[10, 20, 30, 40]
[100, 200, 300, 400].

Comment puis-je obtenir une sortie "plus jolie" comme ceci:

[  1,   2,   3,   4]
[ 10,  20,  30,  40]
[100, 200, 300, 400]

??? Je vous remercie

1
user1403546 5 mars 2016 à 15:55

5 réponses

Meilleure réponse

Tout ce que vous devez savoir, c'est le nombre maximum de chiffres qu'il pourrait y avoir. Si le nombre de chiffres est de trois comme dans votre exemple, procédez comme suit:

for i in A:
    print(", ".join([str(l).rjust(3) for l in i]))

L'utilisation de str(i).rjust(3) place i justifié à droite dans un champ de largeur 3 où les caractères supplémentaires sont des espaces. Vous pouvez leur faire des zéros avec str(i).zfill(3), ou vous pouvez leur faire tout ce que vous voulez avec str(i).rjust(3, "&") par exemple.

Production:

  1,   2,   3,   4
 10,  20,  30,  40
100, 200, 300, 400
4
zondo 5 mars 2016 à 13:04

Le moyen le plus simple consiste à utiliser deux boucles

    for list in A:
        for element in list:
            print element, '\t',
        print '\n'

Essaye ça.

0
NMN 5 mars 2016 à 13:56

Vous ne pouvez pas avoir ces espaces là-dedans si l'enregistrement est un entier, mais ce code semble bien répartir le tableau.

A = [1999999, 2, 3, 47678], [10, 20, 30, 40], [100, 200, 300, 400]
MaxLength=0
for i in range(0,3):
    for x in A[i]:
        MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
for i in range(0,3):
    for x in range(0,len(A[i])):
        Length=MaxLength-len(str(A[i][x]))
        print((" "*Length)+str(A[i][x]),end="|")
    print()

Si vous le souhaitez, vous pouvez l'appeler dans une définition, faites simplement ceci:

def TableFormat(A):
    MaxLength=0
    for i in range(0,3):
        for x in A[i]:
            MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
    for i in range(0,3):
        for x in range(0,len(A[i])):
            Length=MaxLength-len(str(A[i][x]))
            print((" "*Length)+str(A[i][x]),end="|")
        print()

Ensuite, vous pouvez imprimer le tableau proprement en faisant TableFormat(A) avec A comme tableau. Le end="|" peut être échangé contre tout ce que vous souhaitez diviser les enregistrements avec

0
That One Random Scrub 5 mars 2016 à 13:16

Ce code sera plus dynamique. Cela trouvera la longueur maximale du nombre et juste par max_len.

A = [[1, 2, 3, 4], [10, 20, 30, 40], [11100, 20033, 300, 400]]

max_len = len(str(max( max(i) for i in A)))

for i in A:
    print(", ".join([str(l).rjust(max_len) for l in i]))
2
Saiful Azad 5 mars 2016 à 13:08

Pourquoi ne pas utiliser un tableau numpy pour cela?

import numpy as np
print np.array(A)

[[  1   2   3   4]
 [ 10  20  30  40]
 [100 200 300 400]]
0
manu190466 5 mars 2016 à 13:08