반응형
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-else
3진 연산자)
[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
반응형
'programing' 카테고리의 다른 글
비트 스트림에서 비트 패턴을 검색하는 가장 빠른 방법 (0) | 2023.08.29 |
---|---|
문자와 숫자 사이에 0으로 값 채우기 (0) | 2023.08.29 |
우리가 시뮬레이터에서 푸시 알림을 확인할 수 있습니까? (0) | 2023.08.24 |
동의어가 이미 존재하는 경우 동의어를 만들지 않는지 확인하려면 어떻게 해야 합니까? (0) | 2023.08.24 |
다른 테이블을 참조하여 제약 조건을 확인 (0) | 2023.08.24 |