假設我有一個任意長度L的列表:L = list(range(1000))將列表分成幾組的最佳方法是n什么?這是我能夠想到的最佳結構,由于某種原因,它似乎并不是完成任務的最佳方法:n = 25for i in range(0, len(L), n): chunk = L[i:i+25]有內置的功能可以做到這一點嗎?編輯:早期的答案是將我的for循環(huán)重新制作為listcomp,這不是這個主意;您基本上是用另一種形式給我我的確切答案。我正在查看是否有替代方法可以完成此任務,例如.split列表上的假設或類似內容。我也在昨晚編寫的一些代碼中將其用作生成器:def split_list(L, n): assert type(L) is list, "L is not a list" for i in range(0, len(L), n): yield L[i:i+n]
3 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
Itertools.groupby是一個很好的工具,這是一種使用整數除法來拆分整數列表的方法:
>>> for key, group in itertools.groupby(range(10), lambda k: k//3):
... print key, list(group)
...
0 [0, 1, 2]
1 [3, 4, 5]
2 [6, 7, 8]
3 [9]
(列表必須以0開頭才能以完整的組開頭。)
添加回答
舉報
0/150
提交
取消