S
및 T
세트가 할당 되었다고 가정하십시오 . 결합 연산자를 사용하지 않고 |
두 세트의 결합을 어떻게 찾을 수 있습니까? 예를 들어, 교차점을 찾습니다.
S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }
그래서 어떻게 사용하지 않고 한 줄에 두 세트의 합집합을 찾을 수 |
있습니까?
답변
세트에 유니온 메소드를 사용할 수 있습니다. set.union(other_set)
새 세트를 반환합니다. 즉, 자체 수정되지 않습니다.
답변
or_
별명을 사용할 수 있습니다 .
>>> from operator import or_
>>> from functools import reduce # python3 required
>>> reduce(or_, [{1, 2, 3, 4}, {3, 4, 5, 6}])
set([1, 2, 3, 4, 5, 6])
답변
원본 세트를 수정하는 것이 좋으면 (어떤 경우에는 할 수 있습니다) 다음을 사용할 수 있습니다 set.update()
.
S.update(T)
반환 값은입니다 None
. 그러나 S
원본 S
과 의 합집합으로 업데이트됩니다 T
.
답변
사용할 수 없습니다 또한 가정 s.union(t)
에 해당하는 것은 s | t
, 당신은 시도 할 수
>>> from itertools import chain
>>> set(chain(s,t))
set([1, 2, 3, 4, 5, 6])
또는 이해를 원한다면
>>> {i for j in (s,t) for i in j}
set([1, 2, 3, 4, 5, 6])
답변
가입하여 노동 조합을 의미하는 경우 다음을 시도하십시오.
set(list(s) + list(t))
그것은 약간의 해킹이지만, 더 좋은 라이너를 생각할 수는 없습니다.
답변
2 개의리스트가 있다고 가정하자
A = [1,2,3,4]
B = [3,4,5,6]
그래서 당신은 다음과 같이 A
유니온 B
을 찾을 수 있습니다
union = set(A).union(set(B))
또한 교차로와 비 교차로를 찾으려면 다음과 같이하십시오.
intersection = set(A).intersection(set(B))
non_intersection = union - intersection
답변
다음과 같이 두 세트를 모두 하나로 압축을 풀 수 있습니다.
>>> set_1 = {1, 2, 3, 4}
>>> set_2 = {3, 4, 5, 6}
>>> union = {*set_1, *set_2}
>>> union
{1, 2, 3, 4, 5, 6}
는 *
세트를 압축을 풉니 다. 포장 풀기는 iterable (예 : 세트 또는 목록)이 생성하는 모든 항목으로 표시되는 곳입니다. 이러한 수단은 상술 한 실시 예를 단순화 {1, 2, 3, 4, 3, 4, 5, 6}
한 다음에 단순화 된 {1, 2, 3, 4, 5, 6}
세트는 고유 항목만을 포함 할 수 있기 때문에있다.