我有一个大约250个元素的更大列表。我需要将每50个元素分组到一个子列表中,并遍历每个子列表。
例如:
largerList = [0, 1, ... ..., 268]
我希望子列表看起来像:
subLists = [[0, 1, ... ..., 49], [50, 51, ... ..., 99], ... ..., [250, 251, ... ..., 268]]
然后我将能够迭代子列表并为每个子列表做一些事情。
for ls in subLists:
for i in ls:
DO SOMETHING...
答案 0 :(得分:7)
您可以使用列表推导以Pythonic方式执行此操作。见下文:
def group(original_list,n=50):
return [original_list[x:x+n] for x in xrange(0,len(original_list),n)]
你实际上根本不需要这个功能,但我想如果你想改变每个子列表中的项目数量,我会显示功能方式。这也适用:
[original_list[x:x+50] for x in xrange(0,len(original_list),50)]
答案 1 :(得分:1)
请参阅itertools文档中的grouper
示例(不是groupby) - 这听起来像你想要的那样:
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 zip_longest(*args, fillvalue=fillvalue)
答案 2 :(得分:0)
count = len(largerList) / 50
i = 0
smallerList = []
while(i < count):
smallerList.append(largerList[(i*50):(i*50)+50])
i+= 1