>>> string="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
你的原代码,毫无遮拦内置(不包括最终的全长度的字符串,并在其后的任何部分字符串):
>>> l = []
>>> for j in range(0,int(len(string)/17)-1):
... l.append(string[int(j*17):int(j*17+16)])
...
>>> l
['abcdefghijklmnop', 'rstuvwxyzabcdefg', 'ijklmnopqrstuvwx']
清洁的版本,包括所有可能字符串:
>>> for j in range(0,len(string),17):
... l.append(string[j:j+16])
...
>>> l
['abcdefghijklmnop', 'rstuvwxyzabcdefg', 'ijklmnopqrstuvwx', 'zabcdefghijklmno', 'qrstuvwxyz']
我们如何将最后一个变成理解?每个人都喜欢理解。
>>> l = [string[j:j+16] for j in range(0,len(string),17)]
我们可以过滤掉那些过于短暂,如果我们想串:
>>> l = [string[j:j+16] for j in range(0,len(string),17) if len(string[j:j+16])>=16]
你使用Python 2.7或Python 3? – seaotternerd 2015-04-03 17:21:27
FYI'range'支持'step'参数,以便您可以产生'[start,start + step,start + 2 * step ...]' – 2015-04-03 17:22:42
string的长度是多少? – 2015-04-03 17:22:44