1
votes

Quel est le modificateur de format pour 10 espaces itérant dans une liste pour sortir dans une table?

Si j'ai une liste d'un groupe de nombres ou de mots, quel modificateur de format dois-je utiliser pour l'afficher dans un tableau avec un espace et dix nombres / mots par ligne?

list = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390,
420, 450, 480, 510, 540, 570, 600]

output table:
30 60 90 120 150 180 210 240 270 300
330 360 390 420 450 480 510 540 570 600


0 commentaires

3 Réponses :


0
votes

Tout d'abord, n'utilisez pas list comme nom de variable pour remplacer une fonction python. Essayez ce qui suit:

list1 = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480, 510, 540, 570, 600]

result = ''
for i in range(0, len(list1), 10):
    result += ''.join(' '.join([str(x) for x in list1[i:i+10]])) + '\n'
print(result)


2 commentaires

Mon mal c'était juste pour la question ici. Mon nom de variable réel était output_list


@funjunkstorage ok alors!



0
votes

Cela vous permet de spécifier les nombres par ligne

30 60 90 120 150 180 210 240 270 300
330 360 390 420 450 480 510 540 570 600

Sortie

def create_rows(lst, numbers_per_row):
  return [lst[i:i+numbers_per_row] for i in range(0, len(lst), numbers_per_row)]

lst = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390,
420, 450, 480, 510, 540, 570, 600]

for row in create_rows(lst, 10):
  print(*row)


2 commentaires

@ funjunkstorage - heureux de pouvoir aider


@ funjunkstorage - par la façon dont vous pouvez voter ou accepter des réponses pour récompenser les répondants.



0
votes

Utilisez itertools.groupby et enumerate () pour créer des groupes de 10 éléments:

>>> l = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480, 510, 540, 570, 600]

>>> from itertools import groupby
>>> print('\n'.join(' '.join(str(item[1]) for item in group[1]) \
        for group in groupby(enumerate(l), lambda x: x[0]//10)))

30 60 90 120 150 180 210 240 270 300
330 360 390 420 450 480 510 540 570 600


0 commentaires