簡體   English   中英

在python中動態拆分列表

[英]Dynamically split lists in python

我有一個包含5000多個項目的列表,並且這個數字每天都可以更改(最多可以更改成千上萬個)。 列表的長度幾乎每天都在變化。 因此,我想將列表拆分為長度為300的較小列表,但我希望動態定義這些較小列表的名稱。

即:

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

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

等等。

該數據進入一個外部系統,該系統一次最多可以處理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)

分成幾部分,並使用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']}

您可以使用列表列表並按索引訪問,但是如果您只想將列表分成多個塊並在不需要字典或列表列表時使用每個塊,則只需遍歷生成器並傳遞每個塊即可。

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM