根据more_itertools.windowed规范,您可以执行以下操作:
list(windowed(seq=[1, 2, 3, 4], n=2, step=1))
>>> [(1, 2), (2, 3), (3, 4)]但是如果我想把这一切都运行到最后呢?是否有可能获得:
>>> [(1, 2), (2, 3), (3, 4), (4, None)]发布于 2020-03-11 17:11:27
一种变通方法,但不是最好的解决方案是在序列中不附加任何内容。
list(windowed(seq=[1, 2, 3, 4,None], n=2, step=1))发布于 2020-03-12 03:26:23
我相信您可以基于我在以下代码中称为win_step的step=值以编程方式完成此操作。我还尽可能地删除了硬编码,以便更容易地测试各种sequence_list、win_width和win_step数据集:
sequence_list = [1, 2, 3, 4]
win_width = 2
win_step = 1
none_list = []
for i in range(win_step):
none_list.append(None)
sequence_list.extend(none_list)
tuple_list = list(windowed(seq=sequence_list, n=win_width, step=win_step))
print('tuple_list:', tuple_list) 以下是我基于您原始问题的数据集和当前数据集得出的结果:
对于原始文件,其中:
sequence_list = [1, 2, 3, 4, 5, 6]
win_width = 3
win_step = 2结果是:
tuple_list: [(1, 2, 3), (3, 4, 5), (5, 6, None), (None, None, None)]对于当前的数据集,其中:
sequence_list = [1, 2, 3, 4]
win_width = 2
win_step = 1结果是:
tuple_list: [(1, 2), (2, 3), (3, 4), (4, None)]https://stackoverflow.com/questions/60617145
复制相似问题