我们说我有一个清单:
n1 = [20, 21, 22, 23, 24]
我希望遍历列表并打印前三个元素,然后是序列的下三个元素,直到结束。也就是说,我希望输出:
20, 21, 22
21, 22, 23
22, 23, 24
如何在Python中高效地完成此任务?
答案 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