목록에서 중복 항목을 제거하는 몇 가지 작업


일상 업무에서 목록의 중복을 신속하게 제거할 수 있는 몇 가지 주요 방법이 있습니다. 이것이 도움이 되기를 바랍니다.


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]

모두에게 도움이 되길 바랍니다


추천

출처blog.csdn.net/weixin_45906701/article/details/115179276