Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 270 – list 객체용 uniq 메서드

Author:
Jason Petrone <jp at demonseed.net>
Status:
Rejected
Type:
Standards Track
Created:
21-Aug-2001
Python-Version:
2.2
Post-History:


Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

공지

이 PEP는 저자에 의해 철회되었습니다. 저자는 다음과 같이 말합니다.

리스트에서 중복 요소를 제거하는 것은 흔한 작업이지만, 이를 내장 기능으로 만들 이유는 두 가지밖에 없다고 생각합니다. 첫 번째는 훨씬 빠르게 수행할 수 있는 경우인데, 그렇지 않습니다. 두 번째는 코드 작성을 상당히 쉽게 만들어 주는 경우입니다. sets.py의 도입으로 이러한 상황은 사라지는데, 중복 없는 시퀀스를 만드는 것은 단지 다른 데이터 구조, 즉 리스트 대신 집합(set)을 선택하는 문제일 뿐이기 때문입니다.

관련 PEP 218에 설명된 대로, Python 2.3의 표준 라이브러리에 집합이 추가됩니다.

초록

이 PEP는 list 객체에 중복 요소를 제거하는 메서드를 추가할 것을 제안합니다.

근거

리스트에서 중복을 제거하는 것은 흔한 작업입니다. 저는 이것이 list 객체의 메서드로 포함될 만큼 유용하고 충분히 일반적이라고 생각합니다. 또한 C로 구현될 경우, 특히 해싱이나 정렬을 이용한 최적화를 사용할 수 없는 상황에서 더 빠른 실행을 기대할 수 있는 잠재력이 있습니다.

comp.lang.python에는 이 작업을 수행하는 가장 좋은 방법을 묻는 매우 많은 게시물 [1] 이 있습니다. 이를 최적으로 구현하는 것은 다소 까다로우며, 사람들이 스스로 이를 알아내는 수고를 덜어주면 좋을 것입니다.

고려 사항

Tim Peters는 해시 테이블 사용을 시도한 다음 정렬을 시도하고, 마지막으로 무차별 대입 방식으로 대체할 것을 제안합니다 [2]. uniq는 속도를 희생하더라도 리스트 순서를 유지해야 합니까?

‘uniq’라고 표기해야 합니까, 아니면 ‘unique’라고 표기해야 합니까?

참조 구현

무차별 대입 방식 버전을 작성했습니다. listobject.c에서 약 20줄의 코드입니다. 해시 테이블 및 정렬된 중복 제거 지원을 추가하는 데는 한 시간 정도밖에 걸리지 않을 것입니다.

참고 자료