2011-02-11 7 views
2

L = [1,2,3,4]을 우리의 목록으로 보자.다중 매개 변수 'in'in python

1 in LTrue입니다. 2 in LTrue입니다.

(1,2) in L을 쓸 수있는 깨끗한 방법이 있으며 사실입니까? , 목록 L 및 테스트 목록 T과의 관계를 주어

멀티에서, T의 모든 구성원 L에있는 경우, 다음 T multi-in LT multi-in LFalse입니다 그렇지 않으면 True입니다.

물론 멀티 인 함수를 작성할 수는 있지만 추한 것 같습니다.

set((1,2)) <= set(L) 

답변

8

당신은 set들로 (1,2)L을 치료하려면 :

s = set([1,2]) 
    l = set([1,2,3,4]) 

    s.issubset(l) 

.issubset() 메서드는 한 세트의 모든 요소가 다른 세트에 존재하는지 여부를 알려줍니다.

+0

꽤 좋습니다! –

3

방법에 대해 :

set((1,2)).issubset(L) 
3

사용 세트는 표기법을 이해한다면

set((1,2)).issubset(L) 

또는, 더 좋은 :

1

위의 좋은 답변입니다. 또 다른 가능성은 다음과 같습니다.

all(x in L for x in [1,2,3,4]) 

나는 네덜란드가 아니지만 그것은 나에게 "한 가지 확실한 방법"입니다.

) 세트 기반 솔루션과는 달리
5
all(x in L for x in [1, 2]) 

이 (1) 단 curcuits 즉시 요소가 발견되지 않는 한, (2) unhashable 종류의 작동 및 (3)은 좋은 판독

우리는 복잡성을 향상시킬 수 있습니다 (현재 O(n*m)). 다른 방식으로도 ... L을 사전에 변환하고 O(1) 멤버십 테스트를 다시 받으십시오 (체크 할 항목에 대한 두 번째 세트는 필요하지 않습니다) .

+0

'issubset' 또는'<='가 단락되지 않는다는 것을 알고 있습니까? –

+0

@Andrew : 확실히 두 세트를 완성합니다. 나는'issubset'을 short-curcuit로 기대할 것입니다. 그러나 그것은 세 번째 반복 (1.L -> 2 세트 -> set 3. issubset)을 짧게합니다 - 두 번째 세트 (1L -> 2 세트 . genexpr). – delnan