Suponha que S
e T
sejam conjuntos atribuídos. Sem usar o operador de junção |
, como posso encontrar a união dos dois conjuntos? Isto, por exemplo, encontra a interseção:
S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }
Então, como posso encontrar a união de dois conjuntos em uma linha sem usar |
?
|
?|
?def apply_set_operation(a, b, set_operation)
. Ao chamar esta função, eu prefiroapply_set_operation(a, b, set.union)
aapply_set_operation(a, b, set.__or__)
Respostas:
Você pode usar o método de união para conjuntos:
set.union(other_set)
Observe que ele retorna um novo conjunto, ou seja, não se modifica.
fonte
|
pode modificar a variável inline:set_a |= set_b
set_a = set_a.union(set_b)
. Se você quer dizer "no local", nenhum dos dois fará isso, ambos criarão um novoset
a = set((1, 2, 3,)); b = set((1, 3, 4,)); id_a = id(a); a |= b; assert id_a == id(a)
:, @jorgenkg está certo - a variávela
é modificada em linha. Estou esquecendo de algo?a = set((1, 2, 3,)); b = set((1, 3, 4,)); c = a; a |= b; assert id(c) == id(a)
. Mesmo se tivessea
sido destruído,c
não teria sido. Além disso,c
é agoraset([1, 2, 3, 4])
, então o comentário de @ jorgenkg está correto.Você poderia usar o
or_
alias:fonte
Se você está bem com a modificação do conjunto original (o que você pode querer fazer em alguns casos), você pode usar
set.update()
:O valor de retorno é
None
, masS
será atualizado para ser a união do originalS
eT
.fonte
Supondo que você também não possa usar
s.union(t)
, o que equivale as | t
, você pode tentarOu, se você quiser uma compreensão,
fonte
Se por união você quer dizer união, tente o seguinte:
É um pouco complicado, mas não consigo pensar em um liner melhor para fazê-lo.
fonte
list
eset
são construídos em funções do PythonSuponha que você tenha 2 listas
para que você possa encontrar a
A
União daB
seguinte formaAlém disso, se você deseja encontrar interseção e não interseção, faça o seguinte
fonte
Você pode apenas descompactar os dois conjuntos em um como este:
O
*
desempacota o aparelho. Descompactar é o local onde um iterável (por exemplo, um conjunto ou lista) é representado como cada item que ele produz. Isso significa que o exemplo acima simplifica para o{1, 2, 3, 4, 3, 4, 5, 6}
qual simplifica{1, 2, 3, 4, 5, 6}
porque o conjunto pode conter apenas itens exclusivos.fonte
*
faz na linha 3?Você pode fazer
union
ou simples lista de compreensãoA teria todos os elementos de B
fonte