我有一個包含100個字串的串列,它看起來像下面這樣。
['boy',
'boy1',
:
'end']
我正試圖將我的串列分成5個不同的串列。以下是我的方法。
#將我的串列分為5個串列,每個串列包含20個字串。
chunks = [list1[x: x 20] for x in range(0, len(list1), 20) ]
#Extract the list form the chunks
a1 = chunks[0:1]
a2 = chunks[1:2]
a3 = chunks[2:3]
a4 = chunks[3:4]
a5 = chunks[4:5]
#從串列a1 ~ a5中提取串列,因為它有雙括號。
output1 = [elem for output_list in a1 for elem in output_list]
output2 = [elem for output_list in a2 for elemin output_list]
output3 = [elem for output_list in a3 for elemin output_list]
output4 = [elem for output_list in a4 for elemin output_list]
output5 = [elem for output_list in a5 for elemin output_list]
因為它是一個只有100個字串的小串列。但是如果我需要處理一個更大的串列,例如一個包含1000或100000個字串的串列,我需要花費很長的時間來把這個串列分成不同的串列。
我想知道是否有更好的方法讓我把一個串列分成我喜歡的任何數字?
非常感謝您!
uj5u.com熱心網友回復:
你可以使用numpy.array_split()函式。該函式需要2個引數,即要分割的串列和需要的子串列的數量。
import numpy as np
#List of length 20
a_list = ["boy1","boy2","boy3","boy4", "boy5", "boy6","boy7","boy8","boy9", "boy10", "boy11","boy12","boy13","boy14", "boy15"。 "boy16","boy17","boy18","boy19", "end"]
#使用split函式將我的串列分成5個大小相同的子串列。
splits = np.array_split(a_list, 5)
#Output of the above line will be a list , which contains numpy arrays that have to be made into separate list
i=0
for array in splits:
i=i 1
exec(f'output{i}=list(array) ') #為每個子串列指定一個名字。
print("output1:"/span>,output1)
print("output2:",output2)
print("output3:",output3)
print("output4:",output4)
print("output5:",output5)
輸出結果如下(顯示了5個子串列,每個串列包含4個字串):
output1: ['boy1'/span>, 'boy2'/span>, 'boy3'/span>, 'boy4'/span>]
output2: ['boy5'/span>, 'boy6'/span>, 'boy7'/span>, 'boy8'/span>]
output3: ['boy9'/span>, 'boy10'/span>, 'boy11'/span>, 'boy12'/span>]
output4: ['boy13'/span>, 'boy14'/span>, 'boy15'/span>, 'boy16'/span>]
output5: ['boy17'/span>, 'boy18'/span>, 'boy19'/span>, 'end']
uj5u.com熱心網友回復:
如果你想有一個可變數量的塊N,那么你不能有output1, output2, ..., outputN, 因為你事先不知道N。所以你將需要一個串列,或者一個索引:串列對的字典,或者其他什么東西,如果你真的需要,可以從那里創建你的變數。
但是讓我們保持一個固定的塊數:你三次復制你的串列元素,這不必要地拖慢了你的代碼。你至少可以跳過a1 = chunks[0:1]等段落,只做output1 = chunks[0]等;但甚至不需要這些塊:
output1 = [e for e in list1[0:20]
這就夠了。
uj5u.com熱心網友回復:
簡單的單行代碼
ls = list(range(1,101)
chunk = 20
a1,a2,a3,a4,a5 = *[ls[i: i chunk] for i in range(0,len(ls),chunk)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/325378.html
標籤:
上一篇:將串列保存為矩陣的元素
下一篇:如何將年齡計算為年、月和日?
