set

Informar un problema Ver código fuente Nightly 8.1 · 8.0 · 7.5 · 7.4 · 7.3 · 7.2

Es el tipo de conjunto integrado. Un conjunto es una colección iterable y mutable de valores únicos: los elementos del conjunto. El nombre de 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 poder generar un hash. 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 muestra un conjunto nuevo que contiene los elementos únicos de su argumento opcional, que debe ser iterable. Si llamas a set() sin un argumento, se crea un conjunto vacío. Los conjuntos no tienen sintaxis literal.

Las operaciones in y not in comprueban 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 el contexto booleano es verdadero 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 significativo. En particular, un conjunto no es igual a la lista de sus elementos. Los conjuntos no se ordenan en relación con otros conjuntos, y fallará un 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 muestra 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 muestra la intersección de los dos conjuntos: un conjunto que solo contiene 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 muestra la diferencia entre los dos conjuntos: 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 muestra 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 que cualquier elemento que solo estuviera presente en el lado derecho.

Las asignaciones aumentadas correspondientes, |=, &=, -= y ^=, modifican el conjunto de la izquierda.

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 inmovilizar y, una vez inmovilizado, 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 no cambia el conjunto.

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)

Muestra un nuevo conjunto mutable que contiene la diferencia entre este conjunto y otros.

Si s y t son conjuntos, s.difference(t) equivale 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. Esto muestra 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
Conjuntos, secuencias de elementos hashables o diccionarios.

difference_update

None set.difference_update(*others)

Quita todos los elementos que se encuentren en otros de este conjunto.

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
Conjuntos, 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 fallar en un intento de quitar un elemento que no está presente, usa remove. Si necesitas quitar varios elementos de un set, 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 poder generar un hash.

intersección

set set.intersection(*others)

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

Si s y t son conjuntos, s.intersection(t) equivale 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. Esto muestra 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
Conjuntos, secuencias de elementos hashables o diccionarios.

intersection_update

None set.intersection_update(*others)

Quita de este conjunto los elementos que no se encuentren en 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
Conjuntos, secuencias de elementos hashables o diccionarios.

isdisjoint

bool set.isdisjoint(other)

Muestra true 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
Un conjunto, una secuencia de elementos que admiten hash o un diccionario.

issubset

bool set.issubset(other)

Devuelve verdadero si este conjunto es un subconjunto de otro.

Ten en cuenta que un conjunto siempre se considera 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
Un conjunto, una secuencia de elementos que admiten hash o un diccionario.

issuperset

bool set.issuperset(other)

Muestra 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
Un conjunto, una secuencia de elementos que admiten hash o un diccionario.

pop

unknown set.pop()

Quita y muestra 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 un elemento, que debe estar presente en el conjunto, del conjunto.

remove falla si el elemento no estaba presente en el conjunto. Si no quieres fallar en un intento de quitar un elemento que no está presente, usa discard. 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 ser hashable).

symmetric_difference

set set.symmetric_difference(other)

Muestra 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
Un conjunto, una secuencia de elementos que admiten hash o un diccionario.

symmetric_difference_update

None set.symmetric_difference_update(other)

Muestra 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 "s ^= t; however, note that the ^=". La asignación aumentada requiere que ambos lados sean conjuntos, mientras que el método symmetric_difference_update también acepta una secuencia o un diccionario.

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
Un conjunto, una secuencia de elementos que admiten hash o un diccionario.

unión

set set.union(*others)

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

Si s y t son conjuntos, s.union(t) equivale 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 muestra 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
Conjuntos, secuencias de elementos hashables o diccionarios.

update

None set.update(*others)

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

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) equivale 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 argumentos, lo que deja el conjunto sin cambios.

Parámetros

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