목록 이해에서 집합의 Python add() 함수

목록 이해에서 집합의 Python add() 함수

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

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

정확히 무엇인지 이해할 수 없었습니다.그리고 보이지 않습니다.add(i)" 코드의 이 부분은 다음과 같이 수행됩니다.도움말(set.add)아래 설명을 제공합니다 :

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.

관련 정보