파이썬 리스트에서 중복된 요소를 제거하는 방법들 및 성능 비교

이동욱

2021/08/03

Categories: 프로그래밍 - 파이썬 Tags: 파이썬

리스트에서 중복된 요소를 제거하는 방법


1. 자료구조 SET을 이용하는 방법
2. 딕셔너리를 이용하는 방법

첫 번째 방법 - SET() 자료구조 이용


nums = [1, 3, 5, 7, 9, 2, 4, 6, 6, 5, 4] 

sets = set(nums) # 결과: {1, 2, 3, 4, 5, 7, 8,  9}

list(sets) # 결과: [1, 2, 3, 4, 5, 7, 8, 9]

두 번째 방법 - 딕셔너리를 이용하는 방법


nums = [1, 3, 5, 7, 9, 2, 4, 6, 6, 5, 4]

list(set(dict.fromkeys(nums))) # 결과: [1, 3, 5, 7, 9, 2, 4, 6]

>> nums1 = [1, 3, 5, 7, 9, 2, 4, 6, 6, 5, 4]
>> dict.fromkeys(nums1)
{1: None, 3: None, 5: None, 7: None, 9: None, 2: None, 4: None, 6: None}

성능 비교


pip install pytest-benchmark
import time
import random

import pytest

nums = list(random.randint(1, 100) for _ in range(100))


@pytest.mark.benchmark(
    group="group-name",
    min_rounds=10000,
    timer=time.time,
    disable_gc=True,
    warmup=True
)
def test_use_dict(benchmark):
    @benchmark
    def func1():
        list(dict.fromkeys(nums))

@pytest.mark.benchmark(
    group="group-name",
    min_rounds=10000,
    timer=time.time,
    disable_gc=True,
    warmup=True
)
def test_use_set(benchmark):
    @benchmark
    def func2():
        list(set(nums))

참고 문헌

>> Home