반응형
if 문을 사용한 목록 이해
2 개의 이터 러블을 비교하고 두 이터 러블에 나타나는 항목을 인쇄하고 싶습니다.
>>> a = ('q', 'r')
>>> b = ('q')
# Iterate over a. If y not in b, print y.
# I want to see ['r'] printed.
>>> print([ y if y not in b for y in a])
^
그러나이 위치에 잘못된 구문 오류가 발생합니다 ^
. 이 람바 함수의 문제점은 무엇입니까?
주문이 잘못되었습니다. 이 if
뒤에 있어야합니다 for
( if-else
삼항 연산자 에 있지 않는 한 ).
[y for y in a if y not in b]
그러나 이것은 작동합니다.
[y if y not in b else other_value for y in a]
당신은 if
끝에 넣습니다 .
[y for y in a if y not in b]
목록 이해는 중첩 된 전체 지정 대응과 동일한 순서로 작성되며 기본적으로 위의 명령문은 다음과 같이 변환됩니다.
outputlist = []
for y in a:
if y not in b:
outputlist.append(y)
귀하의 버전이 대신 이것을 시도했습니다.
outputlist = []
if y not in b:
for y in a:
outputlist.append(y)
그러나 목록 이해 는 적어도 하나의 외부 루프로 시작 해야합니다 .
이것은 람다 함수가 아닙니다. 목록 이해입니다.
순서를 변경하십시오.
[ y for y in a if y not in b]
목록 이해 공식 :
[<value_when_condition_true> if <condition> else <value_when_condition_false> for value in list_name]
따라서 다음과 같이 할 수 있습니다.
[y for y in a if y not in b]
시연 목적으로 만 : [y가 b에 없으면 y가 그렇지 않으면 a에 y가 거짓]
참고 URL : https://stackoverflow.com/questions/15474933/list-comprehension-with-if-statement
반응형
'IT박스' 카테고리의 다른 글
Java에서 value & 0xff는 무엇을합니까? (0) | 2020.09.07 |
---|---|
Bash 또는 Shell 스크립트에서 함수 선언을 전달 하시겠습니까? (0) | 2020.09.07 |
고정 너비 범위에서 긴 텍스트 / 단어를 줄 바꿈하거나 나누려면 어떻게해야합니까? (0) | 2020.09.07 |
프로토콜 버퍼 대 JSON 또는 BSON (0) | 2020.09.07 |
Visual Studio Wcf 테스트 클라이언트-Int 배열 입력 (0) | 2020.09.07 |