首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何迭代python windowed()到最后一个元素?

如何迭代python windowed()到最后一个元素?
EN

Stack Overflow用户
提问于 2020-03-10 19:56:43
回答 2查看 41关注 0票数 0

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

代码语言:javascript
复制
list(windowed(seq=[1, 2, 3, 4], n=2, step=1))

>>> [(1, 2), (2, 3), (3, 4)]

但是如果我想把这一切都运行到最后呢?是否有可能获得:

代码语言:javascript
复制
>>> [(1, 2), (2, 3), (3, 4), (4, None)]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-11 17:11:27

一种变通方法,但不是最好的解决方案是在序列中不附加任何内容。

代码语言:javascript
复制
list(windowed(seq=[1, 2, 3, 4,None], n=2, step=1))
票数 1
EN

Stack Overflow用户

发布于 2020-03-12 03:26:23

我相信您可以基于我在以下代码中称为win_stepstep=值以编程方式完成此操作。我还尽可能地删除了硬编码,以便更容易地测试各种sequence_listwin_widthwin_step数据集:

代码语言:javascript
复制
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) 

以下是我基于您原始问题的数据集和当前数据集得出的结果:

对于原始文件,其中:

代码语言:javascript
复制
sequence_list = [1, 2, 3, 4, 5, 6]
win_width = 3
win_step = 2

结果是:

代码语言:javascript
复制
tuple_list: [(1, 2, 3), (3, 4, 5), (5, 6, None), (None, None, None)]

对于当前的数据集,其中:

代码语言:javascript
复制
sequence_list = [1, 2, 3, 4]
win_width = 2
win_step = 1

结果是:

代码语言:javascript
复制
tuple_list: [(1, 2), (2, 3), (3, 4), (4, None)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60617145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档