set

Informar un problema Ver código fuente Nocturno · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Es el tipo de conjunto integrado. Un conjunto es una colección mutable y iterable de valores únicos: los elementos del conjunto. El nombre del tipo de un conjunto es "set".

Los conjuntos proporcionan operaciones de tiempo constante para insertar, quitar o verificar la presencia de un valor. Los conjuntos se implementan con una tabla hash y, por lo tanto, al igual que las claves de un diccionario, los elementos de un conjunto deben ser hashables. Un valor se puede usar como elemento de un conjunto solo si se puede usar como clave de un diccionario.

Los conjuntos se pueden construir con la función integrada set(), que devuelve un conjunto nuevo que contiene los elementos únicos de su argumento opcional, que debe ser iterable. Si llamas a set() sin un argumento, se construye un conjunto vacío. Los conjuntos no tienen sintaxis literal.

Las operaciones in y not in verifican si un valor está (o no) en un conjunto:

s = set(["a", "b", "c"])
"a" in s  # True
"z" in s  # False

Un conjunto es iterable y, por lo tanto, se puede usar como operando de un bucle for, una comprensión de lista y las diversas funciones integradas que operan en iterables. Su longitud se puede recuperar con la función integrada len(), y el orden de iteración es el orden en el que se agregaron los elementos por primera vez al conjunto:

s = set(["z", "y", "z", "y"])
len(s)       # prints 2
s.add("x")
len(s)       # prints 3
for e in s:
    print e  # prints "z", "y", "x"

Un conjunto que se usa en un contexto booleano es verdadero si y solo si no está vacío.

s = set()
"non-empty" if s else "empty"  # "empty"
t = set(["x", "y"])
"non-empty" if t else "empty"  # "non-empty"

Los conjuntos se pueden comparar para determinar si son iguales o desiguales con == y !=. Un conjunto s es igual a t si y solo si t es un conjunto que contiene los mismos elementos; el orden de iteración no es importante. En particular, un conjunto no es igual a la lista de sus elementos. Los conjuntos no se ordenan con respecto a otros conjuntos, y fallará cualquier intento de comparar dos conjuntos con <, <=, >, >= o de ordenar una secuencia de conjuntos.

set() == set()              # True
set() != []                 # True
set([1, 2]) == set([2, 1])  # True
set([1, 2]) != [1, 2]       # True

La operación | en dos conjuntos devuelve la unión de los dos conjuntos: un conjunto que contiene los elementos que se encuentran en uno o ambos conjuntos originales.

set([1, 2]) | set([3, 2])  # set([1, 2, 3])

La operación & en dos conjuntos devuelve la intersección de los dos conjuntos: un conjunto que contiene solo los elementos que se encuentran en ambos conjuntos originales.

set([1, 2]) & set([2, 3])  # set([2])
set([1, 2]) & set([3, 4])  # set()

La operación - en dos conjuntos devuelve la diferencia entre ellos: un conjunto que contiene los elementos que se encuentran en el conjunto del lado izquierdo, pero no en el del lado derecho.

set([1, 2]) - set([2, 3])  # set([1])
set([1, 2]) - set([3, 4])  # set([1, 2])

La operación ^ en dos conjuntos devuelve la diferencia simétrica de los dos conjuntos: un conjunto que contiene los elementos que se encuentran en exactamente uno de los dos conjuntos originales, pero no en ambos.

set([1, 2]) ^ set([2, 3])  # set([1, 3])
set([1, 2]) ^ set([3, 4])  # set([1, 2, 3, 4])

En cada una de las operaciones anteriores, los elementos del conjunto resultante conservan su orden de los dos conjuntos de operandos, con todos los elementos que se extrajeron del lado izquierdo ordenados antes de cualquier elemento que solo estaba presente en el lado derecho.

Las asignaciones aumentadas correspondientes, |=, &=, -= y ^=, modifican el conjunto del lado izquierdo en su lugar.

s = set([1, 2])
s |= set([2, 3, 4])     # s now equals set([1, 2, 3, 4])
s &= set([0, 1, 2, 3])  # s now equals set([1, 2, 3])
s -= set([0, 1])        # s now equals set([2, 3])
s ^= set([3, 4])        # s now equals set([2, 4])

Al igual que todos los valores mutables en Starlark, un conjunto se puede congelar y, una vez congelado, fallarán todas las operaciones posteriores que intenten actualizarlo.

Miembros

add

None set.add(element)

Agrega un elemento al conjunto.

Se permite add un valor que ya está presente en el conjunto, lo que deja el conjunto sin cambios.

Si necesitas agregar varios elementos a un conjunto, consulta update o la operación de asignación aumentada |=.

Parámetros

Parámetro Descripción
element obligatorio
Elemento que se agregará.

borrar

None set.clear()

Quita todos los elementos del conjunto.

diferencia

set set.difference(*others)

Devuelve un nuevo conjunto mutable que contiene la diferencia de este conjunto con otros.

Si s y t son conjuntos, s.difference(t) es equivalente a s - t. Sin embargo, ten en cuenta que la operación - requiere que ambos lados sean conjuntos, mientras que el método difference también acepta secuencias y diccionarios.

Se permite llamar a difference sin ningún argumento, lo que devuelve una copia del conjunto.

Por ejemplo:

set([1, 2, 3]).difference([2])             # set([1, 3])
set([1, 2, 3]).difference([0, 1], [3, 4])  # set([2])

Parámetros

Parámetro Descripción
others obligatorio
Establece secuencias de elementos hashables o diccionarios.

difference_update

None set.difference_update(*others)

Quita los elementos que se encuentran en otros conjuntos.

Si s y t son conjuntos, s.difference_update(t) es equivalente a s -= t. Sin embargo, ten en cuenta que la asignación aumentada -= requiere que ambos lados sean conjuntos, mientras que el método difference_update también acepta secuencias y diccionarios.

Se permite llamar a difference_update sin ningún argumento, lo que deja el conjunto sin cambios.

Por ejemplo:

s = set([1, 2, 3, 4])
s.difference_update([2])             # None; s is set([1, 3, 4])
s.difference_update([0, 1], [4, 5])  # None; s is set([3])

Parámetros

Parámetro Descripción
others obligatorio
Establece secuencias de elementos hashables o diccionarios.

descartar

None set.discard(element)

Quita un elemento del conjunto si está presente.

Se permite discard un valor que no está presente en el conjunto, lo que deja el conjunto sin cambios. Si quieres que falle un intento de quitar un elemento no presente, usa remove en su lugar. Si necesitas quitar varios elementos de un conjunto, consulta difference_update o la operación de asignación aumentada -=.

Por ejemplo:

s = set(["x", "y"])
s.discard("y")  # None; s == set(["x"])
s.discard("y")  # None; s == set(["x"])

Parámetros

Parámetro Descripción
element obligatorio
Elemento que se descartará. Debe ser hashable.

intersección

set set.intersection(*others)

Devuelve un nuevo conjunto mutable que contiene la intersección de este conjunto con otros.

Si s y t son conjuntos, s.intersection(t) es equivalente a s & t. Sin embargo, ten en cuenta que la operación & requiere que ambos lados sean conjuntos, mientras que el método intersection también acepta secuencias y diccionarios.

Se permite llamar a intersection sin ningún argumento, lo que devuelve una copia del conjunto.

Por ejemplo:

set([1, 2]).intersection([2, 3])             # set([2])
set([1, 2, 3]).intersection([0, 1], [1, 2])  # set([1])

Parámetros

Parámetro Descripción
others obligatorio
Establece secuencias de elementos hashables o diccionarios.

intersection_update

None set.intersection_update(*others)

Quita de este conjunto los elementos que no se encuentran en todos los demás.

Si s y t son conjuntos, s.intersection_update(t) es equivalente a s &= t. Sin embargo, ten en cuenta que la asignación aumentada &= requiere que ambos lados sean conjuntos, mientras que el método intersection_update también acepta secuencias y diccionarios.

Se permite llamar a intersection_update sin ningún argumento, lo que deja el conjunto sin cambios.

Por ejemplo:

s = set([1, 2, 3, 4])
s.intersection_update([0, 1, 2])       # None; s is set([1, 2])
s.intersection_update([0, 1], [1, 2])  # None; s is set([1])

Parámetros

Parámetro Descripción
others obligatorio
Establece secuencias de elementos hashables o diccionarios.

isdisjoint

bool set.isdisjoint(other)

Devuelve verdadero si este conjunto no tiene elementos en común con otro.

Por ejemplo:

set([1, 2]).isdisjoint([3, 4])  # True
set().isdisjoint(set())         # True
set([1, 2]).isdisjoint([2, 3])  # False

Parámetros

Parámetro Descripción
other obligatorio
Es un conjunto, una secuencia de elementos hashables o un diccionario.

issubset

bool set.issubset(other)

Devuelve verdadero si este conjunto es un subconjunto de otro.

Ten en cuenta que siempre se considera que un conjunto es un subconjunto de sí mismo.

Por ejemplo:

set([1, 2]).issubset([1, 2, 3])  # True
set([1, 2]).issubset([1, 2])     # True
set([1, 2]).issubset([2, 3])     # False

Parámetros

Parámetro Descripción
other obligatorio
Es un conjunto, una secuencia de elementos hashables o un diccionario.

issuperset

bool set.issuperset(other)

Devuelve verdadero si este conjunto es un superconjunto de otro.

Ten en cuenta que un conjunto siempre se considera un superconjunto de sí mismo.

Por ejemplo:

set([1, 2, 3]).issuperset([1, 2])     # True
set([1, 2, 3]).issuperset([1, 2, 3])  # True
set([1, 2, 3]).issuperset([2, 3, 4])  # False

Parámetros

Parámetro Descripción
other obligatorio
Es un conjunto, una secuencia de elementos hashables o un diccionario.

pop

unknown set.pop()

Quita y devuelve el primer elemento del conjunto (en orden de iteración, que es el orden en el que se agregaron los elementos al conjunto por primera vez).

Falla si el conjunto está vacío.

Por ejemplo:

s = set([3, 1, 2])
s.pop()  # 3; s == set([1, 2])
s.pop()  # 1; s == set([2])
s.pop()  # 2; s == set()
s.pop()  # error: empty set

quitar

None set.remove(element)

Quita del conjunto un elemento que debe estar presente en él.

remove falla si el elemento no estaba presente en el conjunto. Si no quieres que se produzca un error cuando intentes quitar un elemento que no está presente, usa discard en su lugar. Si necesitas quitar varios elementos de un conjunto, consulta difference_update o la operación de asignación aumentada -=.

Parámetros

Parámetro Descripción
element obligatorio
Elemento que se quitará. Debe ser un elemento del conjunto (y hashable).

symmetric_difference

set set.symmetric_difference(other)

Devuelve un nuevo conjunto mutable que contiene la diferencia simétrica de este conjunto con otro conjunto, secuencia o diccionario.

Si s y t son conjuntos, s.symmetric_difference(t) es equivalente a s ^ t. Sin embargo, ten en cuenta que la operación ^ requiere que ambos lados sean conjuntos, mientras que el método symmetric_difference también acepta una secuencia o un diccionario.

Por ejemplo:

set([1, 2]).symmetric_difference([2, 3])  # set([1, 3])

Parámetros

Parámetro Descripción
other obligatorio
Es un conjunto, una secuencia de elementos hashables o un diccionario.

symmetric_difference_update

None set.symmetric_difference_update(other)

Devuelve un nuevo conjunto mutable que contiene la diferencia simétrica de este conjunto con otro conjunto, secuencia o diccionario.

Si s y t son conjuntos, s.symmetric_difference_update(t) es equivalente a la asignación aumentada "s ^= t", que requiere que ambos lados sean conjuntos, mientras que el método symmetric_difference_update también acepta una secuencia o un diccionario.; however, note that the

Por ejemplo:

s = set([1, 2])
s.symmetric_difference_update([2, 3])  # None; s == set([1, 3])

Parámetros

Parámetro Descripción
other obligatorio
Es un conjunto, una secuencia de elementos hashables o un diccionario.

unión

set set.union(*others)

Devuelve un nuevo conjunto mutable que contiene la unión de este conjunto con otros.

Si s y t son conjuntos, s.union(t) es equivalente a s | t. Sin embargo, ten en cuenta que la operación | requiere que ambos lados sean conjuntos, mientras que el método union también acepta secuencias y diccionarios.

Se permite llamar a union sin ningún argumento, lo que devuelve una copia del conjunto.

Por ejemplo:

set([1, 2]).union([2, 3])                    # set([1, 2, 3])
set([1, 2]).union([2, 3], {3: "a", 4: "b"})  # set([1, 2, 3, 4])

Parámetros

Parámetro Descripción
others obligatorio
Establece secuencias de elementos hashables o diccionarios.

update

None set.update(*others)

Agrega a este conjunto los elementos que se encuentran en otros.

Por ejemplo:

s = set()
s.update([1, 2])          # None; s is set([1, 2])
s.update([2, 3], [3, 4])  # None; s is set([1, 2, 3, 4])

Si s y t son conjuntos, s.update(t) es equivalente a s |= t. Sin embargo, ten en cuenta que la asignación aumentada |= requiere que ambos lados sean conjuntos, mientras que el método update también acepta secuencias y diccionarios.

Se permite llamar a update sin ningún argumento, lo que deja el conjunto sin cambios.

Parámetros

Parámetro Descripción
others obligatorio
Establece secuencias de elementos hashables o diccionarios.