0

여기에서 구문을 이해하는 데 문제가 있습니다.중첩 된 목록 이해 (중첩 된 요소에 액세스)

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

[a for a, b in matrix_a] 

출력 : [1, 3, 5]

[a for b, a in matrix_a] 

출력 :

[2, 4, 6] 내가 어떻게 목록 - 지능형 작업에 대해 조금 이해하지만 중첩 내에서 특정 요소에 액세스 할 때 내가 구문을 이해하지 못하는 명부.

이 구문을 사용하여 머리를 감쌀 수 없습니다. 이 구문은 어떻게 작동합니까? 쉼표는 무엇을 나타 냅니까? a for a의 의미는 무엇입니까? 두포에서 무슨 일이 일어나는지 설명해 주시겠습니까? 그리고 마지막으로 어떻게 할 것인가? matrix_b

+0

중복으로 나열된 질문은 중첩 된 목록 내재에 관한 것이므로이 질문에 관한 내용은 아닙니다. – thebjorn

답변

2

for 루프로 변환하면 더 쉽게 볼 수 있습니다.

res = [] 
for item in matrix_a: 
    a, b = item # a = item[0]; b = item[1] 
    res.append(a) 

기본적으로 목록에있는 개별 항목의 압축을 풀고 그 중 하나를 선택합니다.

+0

matrix_b의 목록 이해는 어떻게 되겠습니까? –

+1

matrix_b의 경우는 동일하지만 3 개의 vars를 풀어줍니다 '[a, b, c는 matrix_b] ' –

+1

좋아, 이제 알겠습니다. 저는 그것을 a와 b의 두 개의 별개의 문장으로 읽었습니다. 그 점을 명확히하기 위해 와우 주셔서 감사합니다. D You guys are awesome. –

0

나는 반환 중첩 된 각 목록 항목의 첫 번째 요소를 반환 논리적이다 [1 2 4]

Output 스크린 샷 참조하면 [matrix_a에서 B, A의] 여기 을 출력을 서면으로 잘못 생각

+0

이미지를 사용하는 대신 텍스트를 복사 할 수 있습니다. 또한 이것은 _answer_ ..처럼 보이지 않습니다. – thebjorn

0

는 이런 방식으로 이해 :

[a for b, a in matrix_a] #as 
[a for [a, b] in matrix_a] #or 
[a for (a, b) in matrix_a] 
#matrix_a has elements as list of length 2 each 
#so your list comprehenssion says, give me a output list -- having first element'a' from each element of matrix_a(whose each element represented as [a,b] type, with comma, becomes tuple (a,b)), 
# then from [b,a] give me a, that is 2nd element 
# and it will fail if you apply same on matrix_b, cause each element of matrix_b is not of type [a,b] i:e of length 2 
# you will get "ValueError: too many values to unpack" 

아무것도 명확하지 않은 경우 알려줘. 감사.