Python:迭代列表并一次打印x个元素

时间:2018-02-10 01:22:17

标签: python

我们说我有一个清单:

n1 = [20, 21, 22, 23, 24]

我希望遍历列表并打印前三个元素,然后是序列的下三个元素,直到结束。也就是说,我希望输出:

20, 21, 22

21, 22, 23

22, 23, 24

如何在Python中高效地完成此任务?

4 个答案:

答案 0 :(得分:0)

这是一个非常非常Pythonic的解决方案,应该适合作为新程序员。我们通过三元组中的最后一个数字来识别要打印的每个三元组数字,因此我们从22的索引开始,即2,并迭代到列表的末尾。

n1 = [20, 21, 22, 23, 24]
for i in range(2, len(n1)):
    print(n1[i] + ',' + n1[i-1] + ',' + n2[i-2])

答案 1 :(得分:0)

你可以试试这个:

n1 = [20, 21, 22, 23, 24]
listing = [', '.join(map(str, n1[i:i+3])) for i in range(len(n1)-2)]
for l in listing:
  print(l)

输出:

20, 21, 22
21, 22, 23
22, 23, 24

答案 2 :(得分:0)

一种方法是将列表分块并打印。生成器功能有助于使其高效,明确和适应性强。由@Ned Batchelder提供(在那里)。

Center

答案 3 :(得分:0)

如果您只想打印长度为3的块,可以在此处使用zip()

n1 = [20, 21, 22, 23, 24]

for x, y, z in zip(n1, n1[1:], n1[2:]):
    print(x, y, z)

哪个输出:

20 21 22
21 22 23
22 23 24

如果要打印任何大小的块,可以使用collections.deque

from collections import deque
from itertools import islice

def chunks(lst, n):
    queue = deque(lst)

    while len(queue) >= n:
        yield list(islice(queue, 0, n))
        queue.popleft()

n1 = [20, 21, 22, 23, 24]

for x in chunks(n1, 3):
    print(*x)

# 20 21 22
# 21 22 23
# 22 23 24