在一个更大的lis中返回每N个项目的列表的python方法

2024-04-20 01:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大约250个元素的大列表。我需要将每50个元素分组到一个子列表中,并遍历每个子列表。在

例如:

largerList = [0, 1, ... ..., 268]

我希望子列表看起来像:

^{pr2}$

然后我将能够迭代子列表,并为每个子列表做一些事情。在

for ls in subLists:
  for i in ls:
    DO SOMETHING...

Tags: in元素列表for事情dolssomething
3条回答

您可以使用列表理解来以python方式完成这项工作。见下文:

def group(original_list,n=50):

    return [original_list[x:x+n] for x in xrange(0,len(original_list),n)]

实际上,您根本不需要函数,但我想我将展示函数方式,以防您想更改每个子列表中的项数。这同样有效:

^{pr2}$

请参见itertools文档(不是groupby)中的grouper示例,这听起来像您想要的:

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)
count = len(largerList) / 50
i = 0
smallerList = []
while(i < count):
    smallerList.append(largerList[(i*50):(i*50)+50])
    i+= 1

相关问题 更多 >