Reimpreso de la biblioteca de aprendizaje de código abierto de Datawhale
https://github.com/datawhalechina/team-learning-program/tree/master/PythonLanguage
conjunto
Python set
y dict
similares, pero también un conjunto key
de colecciones, pero no almacenado value
. Dado que key
no se puede repetir, no set
hay repetición en key
.
Tenga en cuenta que key
es un tipo inmutable, es decir, un valor hash.
【ejemplo】
num = {
}
print(type(num)) # <class 'dict'>
num = {
1, 2, 3, 4}
print(type(num)) # <class 'set'>
1. Creación de colecciones
- Primero cree el objeto y luego agregue el elemento.
- Solo se puede usar al crear un conjunto vacío
s = set()
, porques = {}
se crea un diccionario vacío.
【ejemplo】
basket = set()
basket.add('apple')
basket.add('banana')
print(basket) # {'banana', 'apple'}
- Incluya un montón de elementos directamente entre llaves
{元素1, 元素2, ..., 元素n}
. - Los elementos repetidos
set
se filtrarán automáticamente.
【ejemplo】
basket = {
'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # {'banana', 'apple', 'pear', 'orange'}
- Utilice
set(value)
funciones de fábrica para convertir listas o tuplas en conjuntos.
【ejemplo】
a = set('abracadabra')
print(a)
# {'r', 'b', 'd', 'c', 'a'}
b = set(("Google", "Lsgogroup", "Taobao", "Taobao"))
print(b)
# {'Taobao', 'Lsgogroup', 'Google'}
c = set(["Google", "Lsgogroup", "Taobao", "Google"])
print(c)
# {'Taobao', 'Lsgogroup', 'Google'}
[Ejemplo] Eliminar elementos duplicados de la lista
lst = [0, 1, 2, 3, 4, 5, 5, 3, 1]
temp = []
for item in lst:
if item not in temp:
temp.append(item)
print(temp) # [0, 1, 2, 3, 4, 5]
a = set(lst)
print(list(a)) # [0, 1, 2, 3, 4, 5]
A partir de los resultados, encontramos dos características del conjunto: desordenado y único.
Dado que la set
colección de almacenamiento no está ordenada, no podemos crear un índice o realizar una operación de colección de segmentos (segmento), y no se pueden usar claves (claves) para obtener el valor de los elementos de la colección, pero se puede determinar si un elemento en la colección.
2. Accede al valor de la colección.
- Puede utilizar la
len()
función incorporada para obtener el tamaño de la colección.
【ejemplo】
s = set(['Google', 'Baidu', 'Taobao'])
print(len(s)) # 3
- Puede
for
leer los datos de la colección uno por uno.
【ejemplo】
s = set(['Google', 'Baidu', 'Taobao'])
for item in s:
print(item)
# Baidu
# Google
# Taobao
- Puede aprobar
in
onot in
juzgar si un elemento ya existe en la colección
【ejemplo】
s = set(['Google', 'Baidu', 'Taobao'])
print('Taobao' in s) # True
print('Facebook' not in s) # True
3. Métodos de recopilación integrados
set.add(elmnt)
Se utiliza para agregar elementos a la colección. Si el elemento agregado ya existe en la colección, no se realiza ninguna operación.
【ejemplo】
fruits = {
"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)
# {'orange', 'cherry', 'banana', 'apple'}
fruits.add("apple")
print(fruits)
# {'orange', 'cherry', 'banana', 'apple'}
set.update(set)
Se usa para modificar la colección actual. Puede agregar nuevos elementos o colecciones a la colección actual. Si el elemento agregado ya existe en la colección, el elemento solo aparecerá una vez y los duplicados serán ignorados.
【ejemplo】
x = {
"apple", "banana", "cherry"}
y = {
"google", "baidu", "apple"}
x.update(y)
print(x)
# {'cherry', 'banana', 'apple', 'google', 'baidu'}
y.update(["lsgo", "dreamtech"])
print(y)
# {'lsgo', 'baidu', 'dreamtech', 'apple', 'google'}
set.remove(item)
Se usa para eliminar el elemento especificado en la colección. Si el elemento no existe, se producirá un error.
【ejemplo】
fruits = {
"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) # {'apple', 'cherry'}
set.discard(value)
Se utiliza para eliminar el elemento de colección especificado.remove()
Se producirá un error en el método al eliminar un elemento que no existe y eldiscard()
método no.
【ejemplo】
fruits = {
"apple", "banana", "cherry"}
fruits.discard("banana")
print(fruits) # {'apple', 'cherry'}
set.pop()
Se usa para eliminar un elemento al azar.
【ejemplo】
fruits = {
"apple", "banana", "cherry"}
x = fruits.pop()
print(fruits) # {'cherry', 'apple'}
print(x) # banana
Dado que un conjunto es un conjunto de elementos no ordenados y que no se repiten, dos o más conjuntos pueden realizar operaciones de conjuntos en un sentido matemático.
set.intersection(set1, set2)
Devuelve la intersección de dos conjuntos.set1 & set2
Devuelve la intersección de dos conjuntos.set.intersection_update(set1, set2)
Intersección, elimine los elementos que no se superponen del conjunto original.
【ejemplo】
a = set('abracadabra')
b = set('alacazam')
print(a) # {'r', 'a', 'c', 'b', 'd'}
print(b) # {'c', 'a', 'l', 'm', 'z'}
c = a.intersection(b)
print(c) # {'a', 'c'}
print(a & b) # {'c', 'a'}
print(a) # {'a', 'r', 'c', 'b', 'd'}
a.intersection_update(b)
print(a) # {'a', 'c'}
set.union(set1, set2)
Devuelve la unión de dos conjuntos.set1 | set2
Devuelve la unión de dos conjuntos.
【ejemplo】
a = set('abracadabra')
b = set('alacazam')
print(a) # {'r', 'a', 'c', 'b', 'd'}
print(b) # {'c', 'a', 'l', 'm', 'z'}
print(a | b)
# {'l', 'd', 'm', 'b', 'a', 'r', 'z', 'c'}
c = a.union(b)
print(c)
# {'c', 'a', 'd', 'm', 'r', 'b', 'z', 'l'}
set.difference(set)
Devuelve la diferencia del conjunto.set1 - set2
Devuelve la diferencia del conjunto.set.difference_update(set)
La diferencia del conjunto, el elemento se elimina directamente del conjunto original y no hay valor de retorno.
【ejemplo】
a = set('abracadabra')
b = set('alacazam')
print(a) # {'r', 'a', 'c', 'b', 'd'}
print(b) # {'c', 'a', 'l', 'm', 'z'}
c = a.difference(b)
print(c) # {'b', 'd', 'r'}
print(a - b) # {'d', 'b', 'r'}
print(a) # {'r', 'd', 'c', 'a', 'b'}
a.difference_update(b)
print(a) # {'d', 'r', 'b'}
set.symmetric_difference(set)
Devuelve el OR exclusivo del conjunto.set1 ^ set2
Devuelve el OR exclusivo del conjunto.set.symmetric_difference_update(set)
Elimina los mismos elementos en otro conjunto especificado del conjunto actual e inserta elementos diferentes en el otro conjunto especificado en el conjunto actual.
【ejemplo】
a = set('abracadabra')
b = set('alacazam')
print(a) # {'r', 'a', 'c', 'b', 'd'}
print(b) # {'c', 'a', 'l', 'm', 'z'}
c = a.symmetric_difference(b)
print(c) # {'m', 'r', 'l', 'b', 'z', 'd'}
print(a ^ b) # {'m', 'r', 'l', 'b', 'z', 'd'}
print(a) # {'r', 'd', 'c', 'a', 'b'}
a.symmetric_difference_update(b)
print(a) # {'r', 'b', 'm', 'l', 'z', 'd'}
set.issubset(set)
Juzgue si la colección está contenida en otras colecciones; si es así, devuelva True; de lo contrario, devuelva False.set1 <= set2
Juzgue si la colección está contenida en otras colecciones; si es así, devuelva True; de lo contrario, devuelva False.
【ejemplo】
x = {
"a", "b", "c"}
y = {
"f", "e", "d", "c", "b", "a"}
z = x.issubset(y)
print(z) # True
print(x <= y) # True
x = {
"a", "b", "c"}
y = {
"f", "e", "d", "c", "b"}
z = x.issubset(y)
print(z) # False
print(x <= y) # False
set.issuperset(set)
Se usa para juzgar si la colección contiene otras colecciones, si es así, devuelve True, de lo contrario devuelve False.set1 >= set2
Juzgue si la colección contiene otras colecciones, si es así, devuelva True, de lo contrario devuelva False.
【ejemplo】
x = {
"f", "e", "d", "c", "b", "a"}
y = {
"a", "b", "c"}
z = x.issuperset(y)
print(z) # True
print(x >= y) # True
x = {
"f", "e", "d", "c", "b"}
y = {
"a", "b", "c"}
z = x.issuperset(y)
print(z) # False
print(x >= y) # False
set.isdisjoint(set)
Se usa para juzgar si dos conjuntos son disjuntos, si devuelve Verdadero, de lo contrario devuelve Falso.
【ejemplo】
x = {
"f", "e", "d", "c", "b"}
y = {
"a", "b", "c"}
z = x.isdisjoint(y)
print(z) # False
x = {
"f", "e", "d", "m", "g"}
y = {
"a", "b", "c"}
z = x.isdisjoint(y)
print(z) # True
4. Establecer conversión
【ejemplo】
se = set(range(4))
li = list(se)
tu = tuple(se)
print(se, type(se)) # {0, 1, 2, 3} <class 'set'>
print(li, type(li)) # [0, 1, 2, 3] <class 'list'>
print(tu, type(tu)) # (0, 1, 2, 3) <class 'tuple'>
5. Colecciones inmutables
Python proporciona una versión de implementación de una colección que no puede cambiar elementos, es decir, no se pueden agregar ni eliminar elementos, y el tipo se nombra frozenset
. Cabe señalar que frozenset
aún se pueden realizar operaciones de conjunto, pero no se pueden utilizar los update
métodos incluidos.
frozenset([iterable])
Devolver una colección congelada. Después de congelar, no se pueden agregar ni eliminar más elementos de la colección.
【ejemplo】
a = frozenset(range(10)) # 生成一个新的不可变集合
print(a)
# frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
b = frozenset('lsgogroup')
print(b)
# frozenset({'g', 's', 'p', 'r', 'u', 'o', 'l'})
Referencias :
- https://www.runoob.com/python3/python3-tutorial.html
- https://www.bilibili.com/video/av4050443
- https://mp.weixin.qq.com/s/DZ589xEbOQ2QLtiq8mP1qQ
Preguntas de práctica :
- Cómo representar una tupla que contiene solo un número 1.
- Cree un conjunto vacío y agregue tres elementos {'x', 'y', 'z'}.
- Lista ['A', 'B', 'A', 'B'] para eliminar los duplicados.
- Encuentre los elementos no repetidos en dos conjuntos {6, 7, 8}, {7, 8, 9} (la diferencia se refiere a la parte fuera de la intersección de los dos conjuntos).
- Encuentre el número de apariciones de elementos en {'A', 'B', 'C'} en {'B', 'C', 'D'}.
Practique respuestas personales :
10 ejercicios
10.1
a = (1,)
print(a,type(a))
(1,) <class 'tuple'>
10,2
a = set()
print(a)
a.update({
'x','y','z'})
print(a)
set()
{'y', 'x', 'z'}
10,3
a = ['a','b','a','b']
b = set(a)
print(list(b))
['a', 'b']
10,4
print(set.symmetric_difference({
6,7,8},{
7,8,9}))
{9, 6}
10,5
n = 0
for i in {
'A','B','C'}:
if i in {
'B','C','D'}:
n += 1
print(n)
2