일상 업무에서 목록의 중복을 신속하게 제거할 수 있는 몇 가지 주요 방법이 있습니다. 이것이 도움이 되기를 바랍니다.
1. Python의 set 메소드는 중복 항목을 제거하지만 원래 목록을 순서대로 변경합니다.
l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
print(l2) # [1, 2, 3, 4, 5, 6]
2. 목록의 인덱스 방식을 통해 중복 제거 후 순서가 변경되지 않은 상태로 유지되는지 확인
l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
l2.sort(key=l1.index)
print(l2) # [1, 4, 2, 3, 5, 6]
itertools.groupby
3. itertools 가져오기 기능을 사용하세요.
l1 = [1,4,4,2,3,4,5,6,1]
l1.sort()
l = []
it = itertools.groupby(l1)
for k,g in it:
l.append(k)
print(l) # [1, 2, 3, 4, 5, 6]
4.Python 사전 fromkeys() 메소드
l1 = [1,4,4,2,3,4,5,6,1]
t = list({
}.fromkeys(l1).keys())
5. 인덱스 삭제
l1 = [1,4,4,2,3,4,5,6,1]
t = l1[:]
for i in l1:
while t.count(i) >1:
del t[t.index(i)]
# 解决顺序问题
t.sort(key=l1.index)
print(t) # [1, 4, 2, 3, 5, 6]
그러나 원래 순서를 변경하지 않고 유지하려면 다음 방법을 시도해 볼 수 있습니다.
1. 반복하여 새 목록을 만듭니다[]
l1 = [1,4,4,2,3,4,5,6,1]
new_l1 = []
for i in l1:
if i not in new_l1:
new_l1.append(i)
print(new_l1) # [1, 4, 2, 3, 5, 6]
2. 감소 방법
from functools import reduce
l1 = [1,4,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
print(reduce(func,[[],]+l1)) # [1, 4, 2, 3, 5, 6]