Python-prevent";对于范围内的i:“;切断序列的结尾

Python-prevent";对于范围内的i:“;切断序列的结尾,python,python-2.7,Python,Python 2.7,我正在研究一个分析蛋白质氨基酸含量的程序(特别是在G/L含量非常丰富的地区) 我使用以下方法将不同长度的序列拆分为20aa的“块”: seq = 'MVFRSPLDLYSSHFLLPNFADSHHCSLLLASSGGGSGASGGGGGAGGGGGGNRAGGGGAGGAGGGSGGGGSRAPPEELSMFQLPTLNFSPEQVASVCETLEETGDIERLGRFLWSLPVAPGACEAINKHESILRARAVVAFHTGNFRDLYHILENHKFTKESHGKLQAMWLEAHYQ

我正在研究一个分析蛋白质氨基酸含量的程序(特别是在G/L含量非常丰富的地区)

我使用以下方法将不同长度的序列拆分为20aa的“块”:

seq = 'MVFRSPLDLYSSHFLLPNFADSHHCSLLLASSGGGSGASGGGGGAGGGGGGNRAGGGGAGGAGGGSGGGGSRAPPEELSMFQLPTLNFSPEQVASVCETLEETGDIERLGRFLWSLPVAPGACEAINKHESILRARAVVAFHTGNFRDLYHILENHKFTKESHGKLQAMWLEAHYQEAEKLRGRPLGPVDKYRVRKKFPLPRTIWDGEQKTHCFKERTRSLLREWYLQDPYPNPSKKRELAQATGLTPTQVGNWFKNRRQRDRAAAAKNRLQHQAIGPSGMRSLAEPGCPTHGSAESPSTAASPTTSVSSLTERADTGTSILSVTSSDSECDV'
w = 20 #chunk size
interval = 20
for i in range(0,len(seq)-w,interval):
   chunk = seq[i:i+w]
   chunk2 = list(chunk)
但是,如果不是20的倍数,则该序列的末尾将被截断,如本例中的len(seq)=333


这给了我1-320作为块,但321-333被忽略。如何将这些“剩菜”放入列表中?

如果从
调用范围中取出
-w
,则可以使现有代码正常工作。切掉序列的结尾是完全合法的,它只会返回比您要求的更短的结果

如果您希望有一个虚拟值来填充序列最后一部分的缺失部分(而不是仅仅缺失最后一部分),您可以使用来自以下位置的
grouper
配方:


如果从
范围
调用中取出
-w
,则可以使现有代码正常工作。切掉序列的结尾是完全合法的,它只会返回比您要求的更短的结果

如果您希望有一个虚拟值来填充序列最后一部分的缺失部分(而不是仅仅缺失最后一部分),您可以使用来自以下位置的
grouper
配方:


-w
放入
范围
?将
-w
放入
范围
def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)