首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python join more_itertools.windowed结果

Python join more_itertools.windowed结果
EN

Stack Overflow用户
提问于 2019-04-08 07:57:47
回答 1查看 443关注 0票数 3

我有一个问题:我正在尝试创建所谓的“digram”,就像这样:

如果我有一个单词foobar,我想得到一个列表或一个生成器,比如:["fo", "oo", "ob", "ba", "ar"]。最完美的函数是more_itertools.windowed。问题是,它返回元组,如下所示:

代码语言:javascript
复制
In [1]: from more_itertools import windowed

In [2]: for i in windowed("foobar", 2):
   ...:     print(i)
   ...:
('f', 'o')
('o', 'o')
('o', 'b')
('b', 'a')
('a', 'r')

当然,我知道我可以.join()它们,所以我会:

代码语言:javascript
复制
In [3]: for i in windowed("foobar", 2):
   ...:     print(''.join(i))
   ...:
   ...:
fo
oo
ob
ba
ar

我只是想知道,在itertoolsmore_itertools中,有没有什么函数可以做到这一点,我看不出来。或者有一种更“蟒蛇”的手工方式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-08 09:53:51

您可以使用切片来编写您自己的widowed版本。

代码语言:javascript
复制
def str_widowed(s, n):
    for i in range(len(s) - n + 1):
        yield s[i:i+n]

这确保了产生的类型与输入相同,但不再接受非索引的可迭代对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55564709

复制
相关文章

相似问题

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