나는 당신이 얻을 수있는 최선의 방법은 튜플로 패키지하는 것입니다.
if (a, b) == (x, y) or (a, b) == (y, x)
또는 세트 조회에서 랩핑 할 수도 있습니다.
if (a, b) in {(x, y), (y, x)}
몇 가지 의견으로 언급되었으므로 타이밍을 조정했으며 조회가 실패하면 튜플과 세트가 동일한 방식으로 수행되는 것처럼 보입니다.
from timeit import timeit
x = 1
y = 2
a = 3
b = 4
>>> timeit(lambda: (a, b) in {(x, y), (y, x)}, number=int(5e7))
32.8357742
>>> timeit(lambda: (a, b) in ((x, y), (y, x)), number=int(5e7))
31.6169182
조회가 성공하면 실제로 튜플이 더 빠르지 만
x = 1
y = 2
a = 1
b = 2
>>> timeit(lambda: (a, b) in {(x, y), (y, x)}, number=int(5e7))
35.6219458
>>> timeit(lambda: (a, b) in ((x, y), (y, x)), number=int(5e7))
27.753138700000008
멤버십 조회를 수행하고 있기 때문에 세트를 사용하기로 선택했으며 개념적으로 세트는 튜플보다 해당 사용 사례에 더 적합합니다. 특정 사용 사례에서 두 구조간에 유의 한 차이를 측정 한 경우 더 빠른 구조로 진행하십시오. 나는 여기서 성능이 요소라고 생각하지 않습니다.
x,y, a,b
있습니다 : 자들은의 int / 수레 / 문자열, 임의의 객체, 또는 무엇? 그들이 종류의 내장했고 경우는 모두를 유지할 수 있었다x,y
및a,b
정렬 된 순서로, 당신은 두 번째 지점을 피할 수 있습니다. 집합을 만들면 네 가지 요소 각각x,y, a,b
이 해시되어 개체 유형에 따라 사소하거나 성능에 영향을 줄 수 있습니다.