복붙노트

[PYTHON] if 문을 사용하여 목록 작성

PYTHON

if 문을 사용하여 목록 작성

두 iterables를 비교하고 두 iterables에 나타나는 항목을 인쇄하고 싶습니다.

>>> 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])
                              ^

그러나 ^ 문자가있는 곳에 잘못된 구문 오류가 발생합니다. 이 람바 함수에 대한 잘못된 점은 무엇입니까?

해결법

  1. ==============================

    1.너 주문 잘못이야. if는 for의 뒤에 있어야합니다 (if-else 삼항 연산자에없는 경우).

    너 주문 잘못이야. 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]
    
  2. ==============================

    2.if를 끝에 둡니다.

    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)
    

    목록 이해는 적어도 하나의 외부 루프로 시작해야합니다.

  3. ==============================

    3.이것은 람다 함수가 아닙니다. 그것은 목록 이해입니다.

    이것은 람다 함수가 아닙니다. 그것은 목록 이해입니다.

    주문 변경 :

    [ y for y in a if y not in b]
    
  4. ==============================

    4.목록 이해 공식 :

    목록 이해 공식 :

    [<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에 대해 False]

  5. from https://stackoverflow.com/questions/15474933/list-comprehension-with-if-statement by cc-by-sa and MIT license