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

Python 개선 제안 한국어 번역

PEP 270 – 리스트 객체를 위한 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가 도입되면서 이런 상황은 사라집니다. 중복 없는 시퀀스를 만드는 것은 단지 다른 자료 구조, 즉 리스트 대신 집합을 선택하는 문제일 뿐이기 때문입니다.

PEP 218에서 설명한 대로, 집합이 Python 2.3의 표준 라이브러리에 추가될 예정입니다.

초록

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

근거

리스트에서 중복을 제거하는 것은 흔한 작업입니다. 저는 이 기능이 리스트 객체의 메서드로 들어갈 만큼 충분히 유용하고 범용적이라고 생각합니다. 또한 C로 구현하면, 특히 해싱이나 정렬을 이용한 최적화를 사용할 수 없는 경우에 더 빠르게 실행될 가능성이 있습니다.

comp.lang.python에는 이 작업을 수행하는 가장 좋은 방법을 묻는 게시물이 정말 많습니다 [1]. 최적으로 구현하기가 조금 까다로우므로, 사람들이 직접 방법을 알아내는 수고를 덜어 줄 수 있다면 좋을 것입니다.

고려 사항

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

철자는 ‘uniq’입니까, ‘unique’입니까?

참조 구현

저는 무차별 대입 버전을 작성했습니다. listobject.c에서 약 20줄 정도의 코드입니다. 해시 테이블과 정렬을 이용한 중복 제거 지원을 추가하는 데는 한 시간 정도만 더 걸릴 것입니다.

참고 문헌