티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Fastest way to check if a value exists in a list

리스트에 값이 있는지 확인하는 가장 빠른 방법

 문제 내용 

What is the fastest way to check if a value exists in a very large list?

매우 큰 리스트에 값이 있는지 확인하는 가장 빠른 방법은 무엇입니까?

 

 

 

 높은 점수를 받은 Solution 

7 in a

Clearest and fastest way to do it.

가장 명확하고 빠른 방법입니다.

 

You can also consider using a set, but constructing that set from your list may take more time than faster membership testing will save. The only way to be certain is to benchmark well. (this also depends on what operations you require)

세트 사용을 고려할 수도 있지만 목록에서 해당 세트를 구성하는 것은 더 빠른 멤버십 테스트가 저장하는 것보다 더 많은 시간이 걸릴 수 있습니다. 확신할 수 있는 유일한 방법은 잘 벤치마킹하는 것입니다. (이것은 또한 필요한 작업에 따라 다릅니다)

 

 

 

 가장 최근 달린 Solution 

If you only want to check the existence of one element in a list,

리스트에 하나의 아이템만 확인하려면,
7 in list_data

is the fastest solution. Note though that

이것이 가장 빠른 솔루션입니다. 그래도 참고하세요.
7 in set_data

is a near-free operation, independently of the size of the set! Creating a set from a large list is 300 to 400 times slower than in, so if you need to check for many elements, creating a set first is faster.

이것은 세트의 크기와 상관 없이 자유롭습니다. 큰 리스트에서 세트를 만드는 것은 in보다 300~400배 느리므로 많은 요소를 확인해야 하는 경우에는 세트를 먼저 만드는 것이 더 빠릅니다.

 

enter image description here

Plot created with perfplot:

성능 그래프:

 

import perfplot
import numpy as np


def setup(n):
    data = np.arange(n)
    np.random.shuffle(data)
    return data, set(data)


def list_in(data):
    return 7 in data[0]


def create_set_from_list(data):
    return set(data[0])


def set_in(data):
    return 7 in data[1]


b = perfplot.bench(
    setup=setup,
    kernels=[list_in, set_in, create_set_from_list],
    n_range=[2 ** k for k in range(24)],
    xlabel="len(data)",
    equality_check=None,
)
b.save("out.png")
b.show()

 

 

출처 : https://stackoverflow.com/questions/7571635/fastest-way-to-check-if-a-value-exists-in-a-list

반응형
댓글
공지사항
최근에 올라온 글