이 글은 주로 Python에서 목록에서 중복 항목을 제거하는 다양한 방법을 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
오늘 동료의 간단한 요청 후 itertools를 사용했습니다. groupby.기능. 그러나 이 것은 결국 사용되지 않았다.
문제는 목록에서 뉴스 ID를 중복 제거한 후에도 순서가 변경되지 않은 상태로 유지되어야 한다는 것입니다.
직관적인 방법
가장 간단한 아이디어는 다음과 같습니다.
코드 복사코드는 다음과 같습니다.
ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ids: if id not in news_ids: news_ids.append(id) print news_ids
이것도 가능하지만 충분히 멋져 보이지는 않습니다.
Set 사용
또 다른 해결 방법은 set을 사용하는 것입니다.
코드 복사코드는 다음과 같습니다.
ids = [1,4,3,3,4,2,3,4,5,6,1] ids = list(set(ids))
결과적으로 원래 순서가 유지되지 않습니다.
인덱스별로 다시 정렬
결국 이 방법으로 해결됨:
코드 복사 코드는 다음과 같습니다.
ids = [1,4,3,3,4,2,3,4,5,6,1] news_ids = list(set(ids)) news_ids.sort(ids.index)
itertools.grouby 사용
기사 처음에 itertools.grouby를 언급했습니다. , 그렇지 않은 경우 목록의 순서를 고려하면 다음을 사용할 수 있습니다.
코드 복사 코드는 다음과 같습니다.
ids = [1,4,3,3,4,2,3,4,5,6,1] ids.sort() it = itertools.groupby(ids) for k, g in it: print k
itertools.groupby의 원리는 여기에서 볼 수 있습니다: http:/ /docs.python.org/2/library/itertools.html#itertools. Netizen groupby
추가됨: Reduce
사용 Netizen reatlk가 다른 솔루션에 대한 메시지를 남겼습니다. 여기에 추가하고 설명합니다:
코드 복사 코드는 다음과 같습니다.
In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1] In [6]: func = lambda x,y:x if y in x else x + [y] In [7]: reduce(func, [[], ] + ids) Out[7]: [1, 4, 3, 2, 5, 6]
위는 ipython에서 실행하는 코드입니다. 여기서 람다 x,y:x if y in x else x + [y ] 등. 람다 x,y의 원자가: x 및 x의 y 또는 x+[y] .
먼저 ID를 [[], 1,4,3,...]으로 변경한 다음 축소 기능을 사용하는 것이 아이디어입니다. Reduce에 대한 설명은 여기를 참조하세요: http://docs.python.org/2/library/functions.html#reduce
위 내용은 Python의 목록에서 중복을 제거하는 몇 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!