Pythonic方式返回更大列表中每N个项目的列表

时间:2016-06-17 02:13:45

标签: python list

我有一个大约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...

3 个答案:

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