2015-10-17 73 views
1

我有一个可能更改的数字列表。我想把它分成16块,这就是下面的结果,但除非被16整除(不经常),否则我会得到剩菜。我想知道在批量处理后如何输出剩余的项目。在Python中遍历一个列表之后,打印出剩余部分

s = ["002","003","005","006","007","008","009","010","012","013","014","015","016","017","018","019","023","024","025","026","027","028","029","031","032","033","034","035","037","038","040","041","042","043","044","045","046","047","048","049","050","051","052","053","055","059","060","063","064","065","066","067","069","070","071","072","073","074","075","076","077","078","079","080","081","082","083","086","088","089","090","091","092","093","094","095","096","097","098","099","100","101","102","105","106","107","109","110","111","112","113","114","115","117","118","120","122","123","124","125","127","128","129","130","131","133","134","135","136","137","138","139","140","143","145","147","148","149","150","152","153","154","155","157","158","160","161","163","165","166","167","169","170","172","173","174","175","177","178","179","181","182","183","185","186","187","188","189","191","192","193","194","195","196","201","202","203","204","205","206","207","208","210","211","212","213","214","215","216","217","218","220","221","222","223","225","226","227","228","229","230","231","232","233","234","235","236","237","238","240","241","242","243","244","245","247","248","300","302"] 

count = 0 
store_count = [] 
for i in s: 
    count += 1 
    store_count.append(i) 
    if count % 16 == 0 : 
     print(store_count) 
     store_count = [] 

输出出现像这样:

['207', '208', '210', '211', '212', '213', '214', '215', '216', '217', '218', '220', '221', '222', '223', '225'] 
['226', '227', '228', '229', '230', '231', '232', '233', '234', '235', '236', '237', '238', '240', '241', '242'] 
+1

要容易得多(和高性能)用切片比增加,例如(对于我在范围内(0,len(s),16)的x [in(s [i:i + 16]):print(x)' – AChampion

+0

@AChampion极好的一点。随意把它作​​为答案。 –

回答

2

循环后,检查store_count有项目:

for i in s: 
    count += 1 
    store_count.append(i) 
    if count % 16 == 0 : 
     print(store_count) 
     store_count = [] 
if store_count:  # <---- Check leftover 
    print(store_count) # <---- 

顺便说一句,而不是公司自己reasing的count,您可以使用enumerate

store_count = [] 
for count, i in enumerate(s, 1): # <---- `count` will be 1, 2, 3, ... 
    store_count.append(i) 
    if count % 16 == 0 : 
     print(store_count) 
     store_count = [] 
if store_count: 
    print(store_count) 
+0

枚举的额外提示。不知道那是一件事。 –

0

你可能只是得到剩余值:

if len(s)%16: 
    leftover = s[-(max(len(s)%16, 1)):]