나는 경계로 주어진 두 세트가 있습니다.
예를 들면 :
set1_bounds = (1, 5)
set2_bounds = (2, 8)
정확히 실제 세트는 다음과 같습니다.
set1 = {1, 2, 3, 4, 5}
set2 = {2, 3, 4, 5, 6, 7, 8}
이제 이러한 집합이 교차하는지 확인하기 위해 경계를 사용하여 이러한 집합을 만들고 다음을 수행합니다.
set1 = {i for i in range(set1_bounds[0], set1_bounds[1]+1)}
set2 = {i for i in range(set2_bounds[0], set2_bounds[2]+1)}
intersect = set.intersection(set1, set2)
그러나 저는 메모리 복잡성 (그리고 계산적)이 가장 최적이 아니라고 생각합니다.
이 작업을 올바르게 수행하려면 어떻게해야합니까?
두 범위 집합을 모두 생성 할 필요가 없습니다. 겹치는 범위를 찾아서 생성 set
하십시오.
r = max(set1_bounds[0], set2_bounds[0]), min(set1_bounds[1]+1, set2_bounds[1]+1)
set(range(*r))
# {2, 3, 4, 5}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다