홈>
파이썬 반복 가능한 이해에 대한 일반적인 질문 :
이러한 진술을하는 이유는 무엇인가요?
[s for s in x if s>2]
와이즈 비즈
if
후에 간다
이지만
for
와이즈 비즈
[s if s>2 else None for s in x]
전에 간다
?
if... else
-
답변 # 1
-
답변 # 2
list(map(lambda s: <expression>, filter(lambda s: <p>, xs)))
이해를 나열하는 것으로 제한되지 않으며 과제 진술 등에 사용될 수 있습니다. 그것은 목록 이해 안에 특별한 의미가 없습니다.와이즈 비즈
if-else
이후의 구문 식은 이해에 포함되는 요소를 선택합니다. 그렇게 할 수 없기 때문에 이해력에 따라 다릅니다. -
답변 # 3
첫 번째 경우,
if
작성된리스트의 각 요소가 무엇인지에 대한 표현식의 일부입니다. 두 번째로 요소를 포함할지 여부를 결정하므로for
가 필요하지 않습니다. ). -
답변 # 4
목록 이해의 가장 일반적인 형태는 다음과 같습니다.
와이즈 비즈 어디if-else
선택 사항입니다.
따라서 다음의 모든 목록 이해가 허용됩니다. (if
,else
)
1.[expression1_of_x for x in iterable if expression2_of_x]
괜찮아. (s, s>2)
2.expressio2_of_x
(s>2이면 None, nil)
3.expression1_of_x
(s>2 인 경우 없음, s>10 인 경우)
자세한 내용은 문서를 참조하십시오.expressio2_of_x
관련 자료
- 내장 메서드없이 파이썬에서 키워드 전후의 단어를 찾는 방법
- c - 사용자가 너무 긴 입력을 입력 한 후에도이 while 루프가 반복되는 이유는 무엇입니까?
- vba - Excel 업그레이드 후 EOF를 평가하는 동안 ADO 레코드 집합이 충돌 함
- r - 열을 두 개로 분리 - 특정 단어 앞뒤
- awk - 다른 IP와 일치하기 전에 IP 뒤의 일치하는 줄 제거
- python - 소수점 앞뒤로 숫자 바꾸기
- excel - 완료되기 전에 매크로 후 매크로 목록 실행
- Latex algorithm - 라텍스 알고리즘 - 다른 경우라면:if는 else를 시작하기 전에 종료를 표시합니다
- c - /configure --host = mingw32를 전달한 후 만드는 동안 Makefile이 충돌했습니다
- python - while 루프 반복 후 변수가 업데이트되지 않음
- c - while 루프 후에 코드 실행이 중지되는 이유는 무엇입니까?
- tensorflow - 모델이 훈련되는 동안 특정 단계 후 loss = nan으로 나타납니다
- bash - 패턴 일치 전후의 줄을 삭제하는 방법
- c++ - while 루프를 종료 한 후 마지막 입력이 작동하지 않음
- sql - 특정 문자 전후에 대한 Redshift 정규식
- html - CSS 전후
- Java에서 파일을 읽으려고하는데 방금 파일을 만든 경우 작동하지만 그 후에는 작동하지 않습니다
- plsql - BEFORE, AFTER 또는 INSTEAD OF 키워드 누락 Oracle 트리거 오류
- javascript - 약속 - 동기화 코드 후 및 비동기 코드 전에 해결이 실행되는 이유
- validation - 아포스트로피와 하이픈 앞뒤의 공백을 금지하는 정규식
조건식과 이해 필터가 공통적으로 가지고있는 것은키워드
if
를 함께 사용하는 것입니다. .a if b else c
조건식입니다. 그것은b
여부에 관계없이 가치를 보장하는 것입니다. 사실이다. 그것의 사용은 목록 이해에 특정되지 않습니다;와이즈 비즈 값[s if s > 2 else None for s in x]
가 주어지면 단순히 새 목록에 대한 값을 제공하는 데 사용되는 표현식으로 사용됩니다.s
에서 .x
의 다른 용도 목록 이해 자체의 구문의 일부입니다. 표현의 일부가 아닙니다. iterable의 특정 값을 표현식으로 전달해야하는지 여부를 결정하는 데 사용되는filter를 지정합니다.리스트 이해력을
if
의 조합으로 생각하면 그리고map
그런 다음 표현식은 함수 인수를filter
로 대체합니다.map
동안 필터는if
에 대한 호출을 대신합니다. . 즉, 일반 목록 이해를 다시 작성할 수 있습니다[ <expression> for s in xs if <p>]
의 조합으로그리고
map
따라서 :목록 이해에 대한 논의를 위해 PEP-202를 볼 수 있고 (구식이 될 수도 있고 다른 구문을 문서화하지 않았음에도 불구하고) PEP-308은하는>고려되는 대체 구문에 대해 논의하십시오.