2013-09-01 7 views
1

파이썬 목록에 하위 목록을 추가하는 방법을 알아 내려고하고 있습니다. 예를 들어, 전에 사용했던 코드는 다음과 같습니다.파이썬 목록에 하위 목록 만들기

pop = [[],[],[],[],[],[],[],[],[],[]] 

그러나 팝업 배열의 길이에 사용자 입력을 추가하려고합니다. 얼마나 많은 배열이 추가되는지. 나는 다른 유래 질문을 검토 한 결과, 그들 중 일부는 같은 제안 :

popLen = 5 
pop = [None]*popLen 

을하지만 나는 그것이 5 개 없음 요소 대신 빈 배열 목록을 생성하는 때. 나는 시도했다 :

pop = [[]]*popLen 

하위 목록에 적절한 방법은 무엇입니까?

+0

코드에서 오류가 발생하지 않습니다. 하지만 다른 문제가 있습니다. –

답변

3

pop = [[]]*popLen가 작동해야하지만 가능성이없는 당신이 그것 때문에 원하는 것은 목록 요소 중 하나에 변화가 다른 사람에 나타나는 것을 의미하는 같은 중첩 된 목록 popLen 배 가득 목록을 만듭니다 :

>>> a = [[]] * 3 
>>> a[0].append(42) 
>>> a 
[[42], [42], [42]] 

더 좋은 대안이 될 것입니다이 문제를 제거

pop = [[] for _ in range(popLen)] # use xrange() in Python 2.x 

:

>>> a = [[] for _ in range(3)] 
>>> a[0].append(42) 
>>> a 
[[42], [], []] 
당신이 할 수있는
3

:

pop = [[] for x in range(popLen)] 

[[]]을 곱하려고하지 마십시오 - 실제로 작동 할 수 있지만, 예상보다 (당신에게 동일한 목록의 사본을 줄 것이다 다른 일을 할 것입니다 당신이 그렇게 독립적으로 변경할 수는 없습니다.)

관련 문제