2017-09-07 8 views
1

하위 목록을 추출하는 중 이상한 결과가 나타납니다.Python 2.7 중첩 목록의 하위 목록이 작동하지 않습니다.

list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

첫 번째 색인과 두 번째 색인을 전환하면 동일한 결과가 생성됩니다.

list[:][1] 
Out[8]: [4, 5, 6] 

list[1][:] 
Out[9]: [4, 5, 6] 

내가 이렇게하면, 그것은 나에게 오류

list[0:1][1] 
Traceback (most recent call last): 

    File "<ipython-input-10-93d72f916672>", line 1, in <module> 
list[0:1][1] 

IndexError: list index out of range 

를 제공이 파이썬 2.7에 몇 가지 알려진 오류가 있습니까? 당신이 목록을 슬라이스 할 때

+1

슬라이스는 마지막 숫자를 포함하지 않습니다. 따라서 [[1, 2, 3] [0 : 1] == [1]'그러므로 [[1, 2, 3] [0 : 1] [1]'은'IndexError' '). 귀하의 예제에서'lst [0 : 1] == [[1,2,3]]'즉 목록 만 '1'항목을 가진 목록입니다. '[:]'색인을 위해 조각을 사용하는 이유가 무엇보다 비싸고 불필요한 것인지 잘 모르겠습니다. 참고 : 변수'list'를 호출하지 마십시오. 파이썬의 내장 타입을 숨 깁니다. – AChampion

+0

그 [1,2,3]가 아니라 [[1,2,3]], 둘 다 매우 다릅니다! 자세한 내용은 내 대답을 참조하십시오 –

+0

@ RathanNaik 지금 고마워요! 어쨌든 목록의 열을 슬라이스 할 수 있습니까? 예를 들어, 하위 목록의 첫 번째 요소 목록을 얻으려면 [1,4,7]? – Roy

답변

1

0 말 : 5 목록이 목록에 유일한 0 번째 요소는 슬라이스 후, 그래서 목록은 여기 목록 [5]

Ex : l = [0,1,2,3,4,5] 
l = l[0:5] 
now l is [0,1,2,3,4] 

그 같은 상황을 제외 슬라이스 얻을 것이다 [[1,2,3]] 이는 0 번째 요소가 [1,2,3]이고 첫 번째 요소가 범위를 벗어 났음을 의미합니다. 당신이 Slicelist[0:1]을 관찰하면

0

은, 그것은 인덱싱 오류 list index out of range

list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] //Original List 

list[0:1] // [[1,2,3]] A list of size 1 

list[0:1][1] // This will return list index out of range 

list[0:1][0] // [1,2,3] 
을 올릴 크기 하나 목록의 인덱스 1에 접근 따라서 0에서 시작 에 또한 파이썬 크기 하나의 목록을 만듭니다
+0

슬라이스 포스트에 대한 답변과 방향에 감사드립니다! – Roy