Conceptos básicos de Python: estructura de datos de Python

Introducción: ya sea ​​que esté realizando cálculos científicos o escribiendo aplicaciones, debe utilizar algunas estructuras de datos básicas, como listas, tuplas y diccionarios. Este artículo explicará estas estructuras de datos básicas en Python en detalle.

Introducción

Ya sea que esté realizando cálculos científicos o escribiendo aplicaciones, debe utilizar algunas estructuras de datos básicas, como listas, tuplas y diccionarios.

Este artículo explicará estas estructuras de datos básicas en Python en detalle.

Lista

Una lista también es una lista, que se puede representar con corchetes:

In [40]: ages = [ 10, 14, 18, 20 ,25]
In [41]: ages
Out[41]: [10, 14, 18, 20, 25]

La lista tiene algunos métodos muy útiles, como agregar , extender , insertar , eliminar , resaltar , indexar , contar , ordenar , revertir , copiar, etc.

por ejemplo:

>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
>>> fruits.count('apple')
2
>>> fruits.count('tangerine')
0
>>> fruits.index('banana')
3
>>> fruits.index('banana', 4)  # Find next banana starting a position 4
6
>>> fruits.reverse()
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
>>> fruits.append('grape')
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
>>> fruits.sort()
>>> fruits
['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
>>> fruits.pop()
'pear'

Usa la lista como una pila

La pila se caracteriza por ser el último en entrar, primero en salir, y la lista nos proporciona los métodos append y pop, por lo que es muy sencillo usar una lista para implementar una pila:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

Usa la lista como una cola

La característica de la cola es el primero en entrar, primero en salir, pero es muy lento usar una lista para insertar elementos al principio de la cola porque todos los elementos deben moverse.

Podemos utilizar collections.dequepara operar rápidamente desde ambos extremos:

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

Comprensión de listas

Para crear una lista, la práctica habitual es utilizar un bucle for para recorrer la lista y establecer valores para ella:

>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

O podemos usar listas por comprensión para generar listas de manera más concisa:

squares = [x**2 for x in range(10)]

Derivar una estructura similar a una lista mediante un par de corchetes se incluye lo siguiente: una expresión, seguida de una forcláusula, luego cero o más for, o ifcláusulas.

La comprensión de la lista recorrerá los elementos de la cláusula for y utilizará la expresión para evaluar y devolver el elemento generado como un nuevo elemento de lista.

Mira uno más complicado:

>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

La expresión anterior es equivalente a:

>>> combs = []
>>> for x in [1,2,3]:
...     for y in [3,1,4]:
...         if x != y:
...             combs.append((x, y))
...
>>> combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

Las listas por comprensión también se pueden anidar, si tenemos una matriz:

>>> matrix = [
...     [1, 2, 3, 4],
...     [5, 6, 7, 8],
...     [9, 10, 11, 12],
... ]

Puede usar la siguiente expresión para intercambiar las filas y columnas de la matriz:

>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

O use la función zip más simple:

>>> list(zip(*matrix))
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

del

Puede utilizar del para eliminar un elemento de la lista. del puede eliminar un valor específico en la lista, también puede eliminar un sector o incluso eliminar toda la lista:

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]
>>> del a

Tupla

Las tuplas son muy similares a las listas, excepto que las tuplas son inmutables.

Las tuplas se expresan entre paréntesis o no se pueden usar paréntesis.

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))

Las operaciones de tupla y lista son muy similares, ambas tienen operaciones de división e índice.

Las tuplas se pueden desempaquetar fácilmente:

>>> x, y, z = t

colocar

El conjunto está representado por la función de conjunto o llaves.

Los elementos del conjunto no se repiten, lo que es muy similar al conjunto en java.

Debido a que la representación de un diccionario también son llaves, si necesita crear un conjunto vacío, debe usar set, porque el {} vacío significa un diccionario.

Mire algunos ejemplos simples de colecciones:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # fast membership testing
True
>>> 'crabgrass' in basket
False
>>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b                              # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # letters in both a and b
{'a', 'c'}
>>> a ^ b                              # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}

Al igual que las listas, las colecciones también admiten comprensiones:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

diccionario

El diccionario también está representado por llaves, la diferencia es que los elementos del diccionario se presentan en forma de clave: valor.

A continuación, se muestran algunas operaciones básicas del diccionario:

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

Además de las llaves, también puede utilizar la función dict para crear un diccionario:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}

Si la palabra clave es un carácter simple, puede escribirlo directamente así:

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}

También se puede utilizar la misma derivación:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

ciclo

Generalmente usamos la instrucción for para recorrer colecciones o diccionarios, listas, etc.

Cuando recorremos el diccionario, podemos usar el método items () para obtener la clave y el valor al mismo tiempo:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

Si es una lista, puede usar la función enumerar para obtener el índice y el valor:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

También usamos la función zip antes, que puede hacer coincidir elementos en múltiples secuencias uno por uno:

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

Este artículo se ha incluido en http://www.flydean.com/06-python-data-structure/

¡La interpretación más popular, los productos secos más profundos, el tutorial más conciso y muchos consejos que no sabes te están esperando!

Bienvenido a prestar atención a mi cuenta oficial: "Programar esas cosas", conocer tecnología, ¡conocerte mejor!

Supongo que te gusta

Origin blog.csdn.net/weixin_43970890/article/details/115089125
Recomendado
Clasificación