У меня есть список, что мне нужно распечатать 10 пунктов на каждой новой строке? - PullRequest
0 голосов
/ 04 июня 2018

гигантский список. Мне нужно печатать каждые 10 элементов в новой строке, чтобы вместо меня написать

for a in range(0, 9):
    print(myList[a])

for b in range(10, 19):
    print(myList[b])

пример ввода:

myList = [1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,171,8,19,20,21,22]
for a in range(0, 9):
    print(myList[a])

for b in range(10, 19):
    print(myList[b])

for c in range(20, 29):
    print(myList[c]     

пример вывода:

>>> 1,2,3,4,5,6,7,8,9
>>> 10,11,12,13,14,15,16,17,18,19
>>> 20,21,23,24,25,26,27,28,29

как я могу написать это в одну строку?

Ответы [ 4 ]

0 голосов
/ 04 июня 2018

Я бы использовал кластеризацию zip для группировки элементов итерируемого.Этот подход позволяет вам использовать это на итерируемых элементах, которые нельзя разрезать, например, на генераторах.

from itertools import zip_longest

def print_n_on_each_line(iterable, n):
    for line in zip_longest(*[iter(iterable)]*n, fillvalue=''):
        print(*line)

a = [1, 2, 3, 4 ,5]
print_n_on_each_line(a, 2)

отпечатки

1 2
3 4
5
0 голосов
/ 04 июня 2018

Я думаю, что немного яснее, чем ответ Франциска:

for i, e in enumerate(myList):
    newline = (i+1)%10 == 0
    print(e, end='\n' if newline else '') # or ', ', or whatever else
0 голосов
/ 04 июня 2018

То, как я интерпретирую ваш вопрос, заключается в том, что вы хотите, чтобы в каждой строке было по 10 элементов.

item1, item2, item3 ... item10
item11, item12, item13 ... item20

Если это так, я, вероятно, рекомендую проверить оператор mod .

for i in range(len(myList)):
    if i !=0 and i%10 == 0:
        print()
    print(myList[i], end=" ")
0 голосов
/ 04 июня 2018

Вы можете сделать что-то вроде этого:

for i in range(0, len(myList), 10):
    print(*myList[i:i+10])
...