2013-09-02 4 views
0

내 목록에 문제가 있습니다. 많은 하위 목록이 있습니다. 이것은 다음과 같습니다Python 하위 목록으로 목록 분할

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

내가 원하는 것은이 같은 것입니다 : 내가 itertools.groupby()와 그것을 시도

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],[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]] 

을 내가 원하는거야?

+1

대신 각 항목에 대한 새 변수를 생성하는 인덱스를 사용할 수 있습니다. L [0], L [1], ... –

+4

하지 마십시오. [변수 이름에서 데이터를 지키십시오] (http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html). 당신은 이미리스트를 가지고 있는데 왜'L [0]','L [1]', 등은 당신에게 효과가 없습니까? –

+2

"내가 원한 것은 이런 식이다."- 아니. 아니, 그렇지 않아. 색인 생성에 익숙하지 않기 때문에 그렇게 생각한다고 생각하지만 잘못하려는 해결책이 있습니다. – user2357112

답변

2

첫째, itertools.groupby() 여기에 당신을 도울 것이다.

당신은 여기에 (내 생각에) 파이썬에서 환상적인 기능 풀고 사용할 수 있습니다 :이 같은 뭔가를하고자하는 경우

는하지만, 당신은 잘못된 접근 방식에
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]} 
+0

우리는 여기서 groupby가 필요합니까? –

+0

@RomanPekar 오, 그렇지 않습니다, 우리는 ... OP가 제공 한 것에서 방황했습니다. – TerryA

2

내가 당신을 위해 할 수있는 최선의 - 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]} 
+0

'enumerate (..., 1)'을 사용하여 대신 1에서 시작할 수 있습니다. 여기에서'L0'에서 시작하는 사전을 만들었습니다. –

+0

@MartijnPieters 감사합니다. –

+0

샘플 출력을 업데이트하려고합니다. :-P –

4

당신은 변수 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의 모든 크기에 맞게 프로그램을 다시 작성할 필요가 없습니다.

0

인덱스를 사용할 수 있습니다!

L1=L[0] 
L2=L[1] 

등등 ....

print L1 
>> [1,5] 
관련 문제