Python 将字符串拆分为特定长度的组

Python 将字符串拆分为特定长度的组,python,list,Python,List,我想知道用Python将字符串(如“abcdefghijklmnopqrstuvwxyz”拆分为一组2(将字符串拆分为:[“ab”、“bc”、“cd”…“yz]”)的最佳方法是什么 或者3人一组:将字符串拆分为[“abc”、“bcd”、“cde”、…“xyz”] 谢谢!这是一行: def split_by_len(text, chunksize): return [text[i:(i+chunksize)] for i in range(len(text)-chunksize+1)]

我想知道用Python将字符串(如
“abcdefghijklmnopqrstuvwxyz”
拆分为一组2(将字符串拆分为:
[“ab”、“bc”、“cd”…“yz]”)的最佳方法是什么

或者3人一组:将字符串拆分为
[“abc”、“bcd”、“cde”、…“xyz”]

谢谢!

这是一行:

def split_by_len(text, chunksize):
    return [text[i:(i+chunksize)] for i in range(len(text)-chunksize+1)]

这里有一个适用于任何iterable的

>>> from itertools import tee, izip, islice
>>> chunksize = 2
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> t = tee(s, chunksize)
>>> for i, j in enumerate(t):
...  next(islice(j, i, i), None)
...
>>> ["".join(k) for k in izip(*t)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
如果
s
始终是一个
str
,这就更直截了当了

>>> [s[i: i + chunksize] for i in range(len(s) + 1 - chunksize)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']

我不会用
str
作为名字,因为它是一个内置的。可能
text
是一个更好的名字。不,OP想要
[“ab”,“bc”,“cd”,“yz]
,而不是
[“ab”,“cd”,“ef”,“yz]
。对于三胞胎,你会得到:
[“abc”,“def”,“ghi”,“jkl”,“mno”,“pqr”,“stu”,“vwx”,“yz”]
…最后一个元素太短。@jamylak,OP要求的组是overlapping@gnibbler同意,我看到的是一个幻觉示例我刚刚意识到我的方法基本上与你的方法相同,只是我的设置类似于
pairwise
>>> from itertools import tee, izip, islice
>>> chunksize = 2
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> t = tee(s, chunksize)
>>> for i, j in enumerate(t):
...  next(islice(j, i, i), None)
...
>>> ["".join(k) for k in izip(*t)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']
>>> [s[i: i + chunksize] for i in range(len(s) + 1 - chunksize)]
['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij', 'jk', 'kl', 'lm', 'mn', 'no', 'op', 'pq', 'qr', 'rs', 'st', 'tu', 'uv', 'vw', 'wx', 'xy', 'yz']