在python

时间:2015-07-07 10:29:09

标签: python

我有一个包含超过5000个项目的列表,这个数字每天都可以更改(最多可以达到10到数千个)。列表的长度几乎每天都在变化。所以我想将列表拆分为长度为300的较小列表,但我希望动态定义这些较小列表的名称。

即:

main_list = ['1029', '2314', '466754', '6345', '3456' ....]

list1 = ['1029', '2314' ... first 300 elements]
list2 = ['342343', '3425' ...  next 300 elements]

等等。

3 个答案:

答案 0 :(得分:3)

  

此数据发送到外部系统,一次最多可处理400个请求。

def process_sublist(i, sublist):
    """Deliver this i-th sublist to the external system."""
    pass

def process_list(main_list, sublist_size):
    """Split main_list into sublists and call process_sublist."""
    for i in range(0, len(main_list), sublist_size):
        index = i / sublist_size
        sublist = main_list[i:i+sublist_size]
        process_sublist(index, sublist)

# Use the function process_list.
main_list = ['1029', '2314', '466754', '6345', '3456', ...]
process_list(main_list, 300)

答案 1 :(得分:1)

拆分成块并使用dict按名称/密钥访问每个:

d = {}
chnks = (main_list[i:i+300]for i in range(0, len(main_list), 300))

for ind, chnk in enumerate(chnks,1):
    d["list_{}".format(ind)] = chnk

print(d)

使用较小的输入尺寸作为示例:

main_list = ['1029', '2314', '466754', '6345', '3456',"4456"]
d = {}
chnks = (main_list[i:i+2]for i in range(0, len(main_list), 2))

for ind, chnk in enumerate(chnks,1):
    d["list_{}".format(ind)] = chnk

print(d)
{'list_3': ['3456', '4456'], 'list_2': ['466754', '6345'], 'list_1': ['1029', '2314']}

您可以使用列表列表并按索引访问,但如果您只想将列表拆分为块并在不需要字典或列表列表时使用每个块,只需迭代生成器并通过每个块。

答案 2 :(得分:0)

gbl只是一个变量和值的字典,您可以使用范围拆分列表,并通过在字典中定义键来定义新变量

gbl=globals()
for j,i in enumerate(range(0,len(main_list),2),1):
    gbl["list"+str(j)]=main_list[i:i+2]

<强>输入

['1029', '2314', '466754', '6345', '3456']

<强>输出

list1=['1029','2134']
list2=['466754','6345']
list3=['3456']