Python 3.x 如何将python windowed()迭代到最后一个元素?

Python 3.x 如何将python windowed()迭代到最后一个元素?,python-3.x,Python 3.x,根据规范,您可以执行以下操作: 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)] 一种解决方法是在序列中追加None,但这不是最好的解决方案 list(windowed(seq=[1, 2, 3, 4,None], n=2,

根据规范,您可以执行以下操作:

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)]

一种解决方法是在序列中追加None,但这不是最好的解决方案

list(windowed(seq=[1, 2, 3, 4,None], n=2, step=1))

一种解决方法是在序列中追加None,但这不是最好的解决方案

list(windowed(seq=[1, 2, 3, 4,None], n=2, step=1))

我相信您可以基于
step=
值以编程方式执行此操作,我在下面的代码中称之为
win\u step
。我还尽可能删除了硬编码,以便更容易地测试各种
序列列表
win\u宽度
、和
win\u步骤
数据集:

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)]
tuple_list: [(1, 2), (2, 3), (3, 4), (4, None)]
对于当前数据集,其中:

sequence_list = [1, 2, 3, 4]
win_width = 2
win_step = 1
结果是:

tuple_list: [(1, 2, 3), (3, 4, 5), (5, 6, None), (None, None, None)]
tuple_list: [(1, 2), (2, 3), (3, 4), (4, None)]

我相信您可以基于
step=
值以编程方式执行此操作,我在下面的代码中称之为
win\u step
。我还尽可能删除了硬编码,以便更容易地测试各种
序列列表
win\u宽度
、和
win\u步骤
数据集:

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)]
tuple_list: [(1, 2), (2, 3), (3, 4), (4, None)]
对于当前数据集,其中:

sequence_list = [1, 2, 3, 4]
win_width = 2
win_step = 1
结果是:

tuple_list: [(1, 2, 3), (3, 4, 5), (5, 6, None), (None, None, None)]
tuple_list: [(1, 2), (2, 3), (3, 4), (4, None)]

如果您使用
step=2向右侧滑动2
,那么下一个窗口化元组输出不是
(无,无,无)
而是
(6,无,无)
?您是对的,我已经重新表述了这个问题如果您使用
step=2向右侧滑动2
,那么下一个窗口化元组输出不是
(无,无,无)
而不是
(6,无,无)
?你是对的,我已经重新表述了这个问题