编写列表推导以生成以下列表模式:
[[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]
a= [2,3,4,5]
pattern = [ ]
l = [ ]
[pattern.append(i+j) for i in a for j in range(0,4)]
print(pattern)
使用此代码,我可以只打印输出而不将它们放入所需的模式。有人可以帮我吗?
编写列表推导以生成以下列表模式:
[[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]
a= [2,3,4,5]
pattern = [ ]
l = [ ]
[pattern.append(i+j) for i in a for j in range(0,4)]
print(pattern)
使用此代码,我可以只打印输出而不将它们放入所需的模式。有人可以帮我吗?
你可以这样做:
a = [2, 3, 4, 5]
pattern = [[ai + j for ai in a] for j in range(0, 4)]
print(pattern)
输出
[[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]
您可以将 arange转换为每个元素的列表a:
>>> a = [2, 3, 4, 5]
>>> sub_list_size = 4
>>> pattern = [list(range(x, x + sub_list_size)) for x in a]
>>> pattern
[[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]
您可以使用 itertools 执行滚动窗口操作。
from itertools import islice, tee
l = [i for i in range(2,10)]
#[2, 3, 4, 5, 6, 7, 8, 9]
def sliding_window(iterable, size):
iterables = tee(iter(iterable), size)
window = zip(*(islice(t, n, None) for n,t in enumerate(iterables)))
yield from window
[i for i in sliding_window(l,4)]
[(2, 3, 4, 5), (3, 4, 5, 6), (4, 5, 6, 7), (5, 6, 7, 8), (6, 7, 8, 9)]