programing

if 문을 사용한 이해력 나열

linuxpc 2023. 8. 24. 21:51
반응형

if 문을 사용한 이해력 나열

나는 두 개의 반복 가능한 항목을 비교하여 두 개의 반복 가능한 항목을 인쇄하고 싶습니다.

>>> 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(만약 그것이 an에 있지 않다면.if-else3진 연산자)

[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)

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

목록 이해 공식:

[<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가 아닌 경우 y에 대해 false]

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

순서만 변경하면 됩니다.

[ y for y in a if y not in b]

충분히 큰 목록을 사용하는 경우not in b절은 각 항목에 대해 선형 검색을 수행합니다.a세트를 사용하면 어떨까요?세트는 새 세트 개체를 만드는 매개 변수로 사용할 수 있습니다.

>>> a = ["a", "b", "c", "d", "e"]
>>> b = ["c", "d", "f", "g"]
>>> set(a).intersection(set(b))
{'c', 'd'}

언급URL : https://stackoverflow.com/questions/15474933/list-comprehension-with-if-statement

반응형