티스토리 뷰
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배 느리므로 많은 요소를 확인해야 하는 경우에는 세트를 먼저 만드는 것이 더 빠릅니다.
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
'개발 > 파이썬' 카테고리의 다른 글
리스트 del, remove 및 pop의 차이 (0) | 2022.12.13 |
---|---|
파이썬에서 휠(wheel) 설치 오류 수정하기 (0) | 2022.12.13 |
파일이 비어 있는지 확인하기 (0) | 2022.12.13 |
특정 파일의 변경(수정) 감지하기 (0) | 2022.12.12 |
열 값을 기준으로 Pandas의 데이터프레임 행 삭제 (0) | 2022.12.12 |