Python使用子列表拆分列表
我的名单有问题。我有一个包含许多子列表的列表。这看起来像这样:Python使用子列表拆分列表,python,list,itertools,sublist,Python,List,Itertools,Sublist,我的名单有问题。我有一个包含许多子列表的列表。这看起来像这样: 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,
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]
...
我想要的是这样的东西:
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:
>>> {'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中的一个很棒的功能(在我看来):
但是如果你打算做这样的事情,那么你就看错了方法。考虑字典:
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
,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=L[0]
L2=L[1]
等等
print L1
>> [1,5]
您可以使用索引,而不是为每个项创建新变量。L[0],L[1],…不。你已经有了一个列表,为什么
L[0]
,L[1]
等不适合你?“我想要的是这样的东西:“-不,不,你没有。你认为你这样做是因为你不熟悉索引,但你试图做的是错误的解决方案。我们需要groupby吗?@RomanPekar哦,是的,我们不。。。我想我只是被OP提供的东西搞糊涂了。你可以用enumerate(…,1)
从1开始。您在此处创建了一个从L0
开始的词典。