[英]Python Split a list with sublists
我的清單有問題。 我有一個包含許多子列表的列表。 看起來像這樣:
L=[[1,5],[1,1,2,8,5,6],[6,46,35,86,24,3,34,46,23,35],[12,14,53,24,41,53],[1,3,6,4,3,8],[2,5,54,4,61,72,65,54],[43,6,2,6,51,3,43,13,64,52,5,8,3,57,52]]
我想要的是這樣的:
L1=[1,5]
L2=[1,1,2,8,5,6]
L3=[6,46,35,86,24,3,34,46,23,35]
L4=[12,14,53,24,41,53]
L5=[1,3,6,4,3,8]
...
我嘗試了itertools.groupby()
,但這給了我:
L=[[[1,5],[1,1,2,8,5,6],[1,3,6,4,3,8]],[6,46,35,86,24,3,34,46,23,35],[12,14,53,24,41,53],[2,5,54,4,61,72,65,54],[43,6,2,6,51,3,43,13,64,52,5,8,3,57,52]]
我該怎么辦?
您不需要創建變量L1
, L2
, L3
等。列表索引已經可以滿足您的需要:
L=[[1,5],
[1,1,2,8,5,6],
[6,46,35,86,24,3,34,46,23,35],
[12,14,53,24,41,53],
[1,3,6,4,3,8],
[2,5,54,4,61,72,65,54],
[43,6,2,6,51,3,43,13,64,52,5,8,3,57,52]]
print L[0] # prints [1, 5]
print L[4] # prints [1, 3, 6, 4, 3, 8]
# If you want the first element of the first list in L, you use
L[0][0]
無論L
的大小如何,這都有工作的優勢。 如果L很大,則無需制作大量的變量,也不必為L的每個可能的大小重寫程序。
我能為您做的最好的-用L1,L2之類的鍵創建字典:
>>> {'L{}'.format(i): x for i, x in enumerate(L, 1)}
{'L1': [1, 5],
'L2': [1, 1, 2, 8, 5, 6],
'L3': [6, 46, 35, 86, 24, 3, 34, 46, 23, 35],
'L4': [12, 14, 53, 24, 41, 53],
'L5': [1, 3, 6, 4, 3, 8],
'L6': [2, 5, 54, 4, 61, 72, 65, 54],
'L7': [43, 6, 2, 6, 51, 3, 43, 13, 64, 52, 5, 8, 3, 57, 52]}
首先, itertools.groupby()
在這里無濟於事。
您可以在此處使用解壓縮功能,這是python中的一個很棒的功能(我認為):
L1, L2, L3, L4, L5, L6, L7 = L
但是,如果您打算擁有這樣的東西,那么您正在尋找錯誤的方法。 考慮一個字典:
d = {}
for i, j in enumerate(L, 1):
d['L{}'.format(i)] = j
打印d
得到:
{'L6': [2, 5, 54, 4, 61, 72, 65, 54], 'L7': [43, 6, 2, 6, 51, 3, 43, 13, 64, 52, 5, 8, 3, 57, 52], 'L4': [12, 14, 53, 24, 41, 53], 'L5': [1, 3, 6, 4, 3, 8], 'L2': [1, 1, 2, 8, 5, 6], 'L3': [6, 46, 35, 86, 24, 3, 34, 46, 23, 35], 'L1': [1, 5]}
您可以使用索引!
L1=L[0]
L2=L[1]
等等....
print L1
>> [1,5]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.