반응형
Python : 한 세트에 다른 세트가 완전히 포함되어 있는지 확인 하시겠습니까?
한 세트에 다른 세트가 완전히 포함되어 있는지 확인하는 빠른 방법이 있습니까?
다음과 같은 것 :
>>>[1, 2, 3].containsAll([2, 1])
True
>>>[1, 2, 3].containsAll([3, 5, 9])
False
그것들은 목록이지만 실제로 집합을 의미한다면 issubset 메서드를 사용할 수 있습니다.
>>> s = set([1,2,3])
>>> t = set([1,2])
>>> t.issubset(s)
True
>>> s.issuperset(t)
True
목록의 경우 각 요소를 확인하는 것보다 더 잘할 수는 없습니다.
완전성을 위해 : 이것은 issubset
(분명히 덜 명확하고 / 읽을 수 있지만 ) 다음과 동일합니다 .
>>> set([1,2,3]) >= set([2,1])
True
>>> set([1,2,3]) >= set([3,5,9])
False
한 가지 옵션은 그대로 둡니다. 빼기 :
>>> {1, 2} - {1, 2, 3}
set([])
>>> {1, 2, 3} - {1, 2}
set([3])
기본적으로 첫 번째 목록의 요소가 두 번째 목록에 없는지 확인합니다.
누락 된 값을 보여줄 수 있기 때문에 매우 편리하다는 것을 알았습니다.
>>> def check_contains(a, b):
... diff = a - b
... if not diff:
... # All elements from a are present in b
... return True
... print('Some elements are missing: {}'.format(diff))
... return False
...
>>> check_contains({1, 2}, {1, 2, 3})
True
>>> check_contains({1, 2, 3}, {1, 2})
Some elements are missing: set([3])
False
세트가 다른 세트의 서브 세트로 의심되고이 두 세트를 함께 교차하는 경우 결과는 서브 세트 인 경우 자체와 동일합니다.
a = [2,1,3,3]
b = [5,4,3,2,1]
set(a).intersection(set(b)) == set(a)
>>True
set.issubset()
또는 set.issuperset()
(또는 연산자 기반 대응 : <=
및 >=
)을 사용할 수 있습니다 . 메소드는 세트뿐만 아니라 모든 이터 러블 을 인수로 허용 합니다 .
>>> {1, 2}.issubset([1, 2, 3])
True
>>> {1, 2, 3}.issuperset([1, 2])
True
그러나 연산자를 사용하는 경우 두 인수가 모두 설정되어야합니다.
>>> {1, 2} <= {1, 2, 3}
True
>>> {1, 2, 3} >= {1, 2}
True
아래 함수는 mainlist가 하위 목록을 완전히 포함하지 않으면 0을 반환하고 완전히 포함되면 1을 반환합니다.
def islistsubset(sublist,mainlist):
for item in sublist:
if item in mainlist:
contains = 1
else:
contains = 0
break;
return contains
>>> set([1,2,3]).issuperset(set([2,1]))
True
>>>
>>> set([1,2,3]).issuperset(set([3,5,9]))
False
참고 URL : https://stackoverflow.com/questions/2765892/python-see-if-one-set-contains-another-entirely
반응형
'Nice programing' 카테고리의 다른 글
모든 하위 요소에 대한 CLASS 제거 (0) | 2020.11.07 |
---|---|
HTMLElement를 문자열로 변환하는 방법 (0) | 2020.11.07 |
Git은 파일을 어디에 저장합니까? (0) | 2020.11.07 |
NSARC의 객체에 대한 약한 참조 (__unsafe_unretained) 배열 (0) | 2020.11.06 |
C # 문자열 분할 및 결합 (0) | 2020.11.06 |