python循环遍历列表中的n个连续项

mpa*_*ida 3 python

我需要迭代列表中的n个连续元素.例如:

data = [1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)

我需要过去:

1 2
2 3
3 4
4 5
Run Code Online (Sandbox Code Playgroud)

要么:

1 2 3
2 3 4
3 4 5
4 5 6
Run Code Online (Sandbox Code Playgroud)

有拉链功能吗?

grc*_*grc 5

我不确定你到底在想什么,但试试这个:

data = [1, 2, 3, 4, 5, 6, 7]

n = 3

[data[i:i+n] for i in range(len(data) - n + 1)]

# [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)

要么:

f = lambda data, n: [data[i:i+n] for i in range(len(data) - n + 1)]

for x, y, z in f([1, 2, 3, 4, 5, 6, 7], 3):
    print x, y, z
Run Code Online (Sandbox Code Playgroud)