>>> 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