를 구성 할 생성 목록에 그래서, 3의 범위를 사용하는 위의 목록 이해의 일반적인 형태는 일반적으로이
[(the task to be done) (how long it has to be done)]
우리처럼 이해 될 수있다 루프를 에 사용하십시오. 수행해야 할 시간은 부분이며 작업은 부분이 if
일 수 있습니다. 중요한 것은입니다. 작업은 부분이 유효한 값 (심지어 None
이 유효한 값)을 반환해야합니다. 따라서 목록 이해에서 Python 구문 (return
, Python 2.x print
등)을 사용할 수 없습니다. 당신이 루프 버전의에 표시된대로이 정확히 목록을 만듭니다
['a' if r == c else 'b' for c in range(3) for r in range(3)]
# ['a', 'b', 'b', 'b', 'a', 'b', 'b', 'b', 'a']
이제 첫 번째 질문에 대답하는
.
'a' if r == c else 'b'
for c in range(3)
실행되고리스트 [0, 1, 2]
가 생성되고, 그 다음 모든 반복 for r in range(3)
상에서 실행되며리스트 [0, 1, 2]
생성한다 동일
if r == c:
'a'
else:
'b'
우선
같이이된다.
r
을 반복 할 때마다 위의 if 조건이 실행되고 그 결과 인
if..else
이 생성되는 새 목록의 요소로 사용됩니다.
두 번째 질문에 대답하려면 목록 이해력을 잘 사용할 수 있습니다.
위 예제에서 우리는 기본적으로 이해할 수있는 것은 목록을 생성하는 것입니다. 이제, 당신이 우리의 중첩 된 지능형리스트를 보면 첫째, 지금이
[['a' if r == c else 'b' for r in range(3)] for c in range(3)]
# [['a', 'b', 'b'], ['b', 'a', 'b'], ['b', 'b', 'a']]
처럼 (우리가 작업에 지능형리스트를 사용하려고 일부를 수행 할) 목록 함축을 시도하고 중첩 할 수 있습니다 , for c in range(3)
이 실행되고 ['a' if r == c else 'b' for r in range(3)]
부분이 실행되어 중첩 목록의 개별 행을 생성합니다. 주목해야 할 중요한 점은 중첩 된 목록 이해 내에서 c
을 사용할 수 있다는 것입니다.
내 목록을 하위 목록으로 구성하고 싶다고합시다. 범위를 3으로 설정 했으므로 각 하위 목록에 3 개의 요소가 설정되었습니다.그것도 목록 이해력에 넣을 수 있습니까? –
@HayleyvanWaas이 질문을 실제 질문에 포함하고 샘플 입력과 출력으로 설명해주십시오. – thefourtheye
@HayleyvanWaas 업데이트 된 답변을 확인하십시오. – thefourtheye