목록 이해의 컬렉션을 위한 Python add() 함수

목록 이해의 컬렉션을 위한 Python add() 함수

목록에서 중복 항목을 제거하기 위해 다음 코드를 발견했습니다.

seen = set(); print [i for i in list if i not in seen and not seen.add(i)]  

무슨 일인지 이해할 수 없다"그것을 보지 못했습니다. 추가(i)"코드의 이 부분이 하는 일은도움말(설정.추가)다음과 같이 설명하십시오.

add(...)
    Add an element to a set.
    This has no effect if the element is already present.

그것을 이해하는 데 도움을 기대합니다

답변1

목록 이해는 원래/입력 값 목록을 반복합니다. 아직 표시되지 않은 경우에만 새/출력 목록에 값을 추가하려고 하므로 조건식은 입니다 if i not in seen. 새 값이 새/출력 목록에 추가되면 seen컬렉션을 업데이트해야 하므로 업데이트 seen.add(i)함수 호출이 필요합니다. 그러나 set.add()메소드는 를 반환 None하며 이는 로 평가됩니다 False. 그래서 이 연산자는 항상 를 반환 not하도록 추가되었습니다 .not seen.add(i)True

관련 정보