목 차
💡 팁 순서가 유지되는 방법과 그렇지 않은 방법이 있습니다.
1. list의 특성
- 리스트를 정의할 땐 중괄호 []를 사용합니다.
a = [1, 2]
b = [‘apple’, ‘banana’, ‘banana’]
a = [1, 4, 3, 2]
a.append(4) # 리스트의 맨 뒤에 `4`를 추가
print(a)
#출력된 값 [1, 4, 3, 2, 4]
e = [1, 2, (‘apple’, ‘banana’)] #리스트 안에 ()튜플이 있습니다.
2. 형변환을 통한 중복제거, Set
- 집합 자료형은 크게 두가지 특징이 있습니다.
- 중복을 허용하지 않는다.
- 순서가 없다.
- 중복을 허용하지 않는 특성을 이용해서 중복된 값이 있던 list를 set 형태로 바꾼 후, 다시 list 형태로 변환하면 중복을 제거할 수 있습니다.
- set의 방식으로 중복을 제거할 경우, 순서가 뒤죽박죽 된다는 단점이 있다. 만약 순서를 지켜야 하는 경우, 반복문을 사용하세요
names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim'] unique_set = set(names) #set으로 변환 unique_list = list(unique_set) #list로 변환 print(unique_list)
출력된 값은 ['Stacy', 'Sarah', 'Jim', 'Bob']
3. numpy 모듈을 통한 중복제거, numpy.unique(sbj).tolist()
- NumPy 패키지를 사용하는 경우, numpy.unique()함수를 사용할 수도 있습니다.
- 이의 방법은 원래 요소 순서를 유지하지 않습니다.
import numpy names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim'] numpy.unique(names).tolist() 출력된 값 ['Bob', 'Jim', 'Sarah', 'Stacy']
4. 반복문을 통한 순서유지 중복제거, for
- my_list의 모든 요소를 순회하며 해당 요소가 new_list에 있는지 확인한 다음 해당 요소가 존재하지 않으면 new_list에 추가합니다.
반복문과 조건문을 이용한 방법으로 순서가 유지됩니다.names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim'] unique = [] for name in names: # 1st loop if name not in unique: # 2nd loop unique.append(name) print(unique)
출력된 값 ['Bob', 'Stacy', 'Sarah', 'Jim']
5. collections.OrderedDict 데이터구조를 통한 순서유지 중복제거
- collections.OrderedDict 데이터 구조는 원래 순서를 유지하면서 목록을 중복 제거합니다.
from collections import OrderedDict names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim'] unique = list(OrderedDict.fromkeys(names)) print(unique) 출력된 값 ['Bob', 'Stacy', 'Sarah', 'Jim']
6. numpy 모듈과 index를 이용한 순서유지 중복제거
- NumPy 의 순서를 유지하면서 목록을 중복 제거하려면 index를 부여하면 됩니다.
import numpy names = ['Bob', 'Stacy', 'Sarah', 'Jim', 'Stacy', 'Jim'] _, indexes = numpy.unique(names, return_index=True) unique = [names[i] for i in numpy.sort(indexes)] print(unique) 출력된 값 ['Bob', 'Stacy', 'Sarah', 'Jim']
0 댓글