목록에서 중복 항목을 제거하기 위해 다음 코드를 발견했습니다.
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