IT박스

if 문을 사용한 목록 이해

itboxs 2020. 9. 7. 07:55
반응형

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

반응형