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