我有一个问题:我正在尝试创建所谓的“digram”,就像这样:
如果我有一个单词foobar,我想得到一个列表或一个生成器,比如:["fo", "oo", "ob", "ba", "ar"]。最完美的函数是more_itertools.windowed。问题是,它返回元组,如下所示:
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()它们,所以我会:
In [3]: for i in windowed("foobar", 2):
...: print(''.join(i))
...:
...:
fo
oo
ob
ba
ar我只是想知道,在itertools或more_itertools中,有没有什么函数可以做到这一点,我看不出来。或者有一种更“蟒蛇”的手工方式?
发布于 2019-04-08 09:53:51
您可以使用切片来编写您自己的widowed版本。
def str_widowed(s, n):
for i in range(len(s) - n + 1):
yield s[i:i+n]这确保了产生的类型与输入相同,但不再接受非索引的可迭代对象。
https://stackoverflow.com/questions/55564709
复制相似问题