Что такое модификатор формата для 10 пробелов, перебирающих список для вывода в таблицу? - PullRequest
1 голос
/ 23 октября 2019

Если у меня есть список из набора цифр или слов, какой модификатор формата я использую, чтобы вывести его в таблицу с одним пробелом и десятью цифрами / словами в строке?

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

Ответы [ 4 ]

0 голосов
/ 23 октября 2019

Используйте itertools.groupby и enumerate(), чтобы создать группы из 10 элементов:

>>> 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 голосов
/ 23 октября 2019

Прежде всего, не используйте list в качестве имени переменной, которую вы переопределяете в функции python. Попробуйте следующее:

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)
0 голосов
/ 23 октября 2019

Позволяет указать числа в строке

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)

Вывод

30 60 90 120 150 180 210 240 270 300
330 360 390 420 450 480 510 540 570 600
0 голосов
/ 23 октября 2019

Вы можете использовать распаковку списка:

l = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480, 510, 540, 570, 600]
print(*l[:len(l)//2])
print(*l[len(l)//2:])

Вывод:

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

РЕДАКТИРОВАТЬ:

for i in range(0,len(l),10):
    if i+10 < len(l): print(*l[i:i+10])
    else: print(*l[i:])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...