Как напечатать каждый n-й индекс списка Python на новой строке? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь распечатать список, и для каждых 5 индексов выводится новая строка.Так, например, если у меня есть:

  [1,2,3,4,5,6,7,8,9,10]

результат будет:

  1 2 3 4 5
  6 7 8 9 10

Я пробовал это до сих пор:

   lst = [1,2,3,4,5,6,7,8,9,10]

   for i in lst:
       if len(lst) > 5:
          print(lst,'\n')

но все, что я получаюэто:

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

   .......

Как я могу это сделать?

Спасибо за помощь!

Ответы [ 4 ]

0 голосов
/ 22 января 2019

Вы можете использовать ниже код: -

for i in range(0,len(a),5):
    print(" ".join(map(str, a[i:i+5])))

Это даст вам желаемый результат.

Code Snip

0 голосов
/ 22 января 2019

Попробуйте:

a = [1,2,3,4,5,6,7,8,9,10]
for i in [a[c:c+5] for c in range(0,len(a),5) if c%5 == 0]:
    print(*i)

на выходе будет:

1 2 3 4 5
6 7 8 9 10

также вы можете заменить 5 на любое другое число или переменные.

0 голосов
/ 22 января 2019

Немного идиоматичнее других ответов:

n = 5
lst = [1,2,3,4,5,6,7,8,9,10]

for group in zip(*[iter(lst)] * n):
    print(*group)

1 2 3 4 5
6 7 8 9 10

Для больших списков, это также намного быстрее:

In [1]: lst = range(1, 10001)

In [2]: n = 5

In [3]: %%timeit
    ...: for group in zip(*[iter(lst)] * n):
    ...:     group
    ...:
236 µs ± 49.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [4]: %%timeit
    ...: for i in range(0, len(lst), n):
    ...:     lst[i:i+n]
    ...:
1.32 ms ± 184 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
0 голосов
/ 22 января 2019

Использовал цикл for с шагом:

n_indices = 5
lst = [1,2,3,4,5,6,7,8,9,10]

for i in range(0, len(lst), n_indices):
    print(lst[i:i+n_indices])

>>>[1, 2, 3, 4, 5]
>>>[6, 7, 8, 9, 10]

Если вы хотите быть более любопытным с форматированием, вы можете использовать распаковку аргумента следующим образом: print(*list[i:i+n_indices]) и получить выходные данные в этом формате:

1 2 3 4 5
6 7 8 9 10
...