10 colección

Reimpreso de la biblioteca de aprendizaje de código abierto de Datawhale

https://github.com/datawhalechina/team-learning-program/tree/master/PythonLanguage

conjunto

Python sety dictsimilares, pero también un conjunto keyde colecciones, pero no almacenado value. Dado que keyno se puede repetir, no sethay repetición en key.

Tenga en cuenta que keyes 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(), porque s = {}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 setse 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 setcolecció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 forleer 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 ino not injuzgar 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 el discard()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 frozensetaún se pueden realizar operaciones de conjunto, pero no se pueden utilizar los updatemé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 :

  1. Cómo representar una tupla que contiene solo un número 1.
  2. Cree un conjunto vacío y agregue tres elementos {'x', 'y', 'z'}.
  3. Lista ['A', 'B', 'A', 'B'] para eliminar los duplicados.
  4. 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).
  5. 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

Supongo que te gusta

Origin blog.csdn.net/Han_Panda/article/details/113092530
Recomendado
Clasificación