2014-11-19 2 views
3

I는 다음과 같이 목록의 목록을 가지고 :가장 좋은 방법은

[[[12, 15, 0], [13, 15, 25], [14, 15, 25], [16, 16, 66], [18, 15, 55]]] 

내가 사용할 수 있습니다 알고 인덱스 위치 (1)에서 발생하는 모든 요소를 ​​추출하는 가장 좋은 방법이 될 것입니다 무엇 for 루프는 다음과 같습니다.

그러나이 작업을 수행하는 데 더 많은 "파이썬"(간단하거나 쉽거나 적은 코드/효율적인) 방법이 있습니까?

답변

4

당신이 사용할 수있는 list comprehension :

>>> lst = [[[12, 15, 0], [13, 15, 25], [14, 15, 25], [16, 16, 66], [18, 15, 55]]] 
>>> [x[1] for x in lst[0]] 
[15, 15, 15, 16, 15] 
>>> 

에 해당합니다 : 그것은 훨씬 더 간결 것을 제외하고

lst = [[[12, 15, 0], [13, 15, 25], [14, 15, 25], [16, 16, 66], [18, 15, 55]]] 
final_list = [] 
for sub_list in lst[0]: 
    final_list.append(sub_list[1]) 

또한 것을 의미합니다 (list.append에 대한 모든 호출을 방지 더 효율적입니다.)

1

사용 지능형리스트 :

[ x[1] for x in my_list[0] ] 

이 중첩 된 목록에 모리 인 경우보다 일반적인입니다 ...

[ y[1] for x in my_list for y in x ]