Latest web development tutorials

estructura de datos python3

En este capítulo se combina principalmente con el conocimiento que aprendimos antes de introducir las estructuras de datos de Python.


lista

lista de Python es variable, que es la característica más importante lo distingue de las cadenas y las tuplas, a saber, una frase: La lista puede ser modificado, mientras que las cadenas y las tuplas no pueden.

He aquí una lista de Python:

camino descripción
list.append (x) Para añadir un elemento al final de la lista, lo que equivale a un [len (a):] = [x].
lista.extend (L) Mediante la adición de todos los elementos de la lista especificada para expandir la lista, el equivalente a un [len (a):] = L.
list.insert (i, x) Insertar un elemento en la ubicación especificada. El primer parámetro se va a insertar en su índice en frente de los elementos, tales como a.insert (0, x) se inserta antes de toda la lista, pero a.insert (len (a), x) es equivalente a a.append ( x).
list.remove (x) Elimina el primer elemento de la lista cuyo valor es x. Si no existe tal elemento, devolverá un error.
list.pop ([i]) Eliminar elementos de la posición especificada en esta lista, y lo devuelve. Si no se especifica el índice, a.pop () devuelve el último elemento. Elemento fue inmediatamente retirado de la lista. (El método de corchetes de la i indica que el parámetro es opcional, no es que se debe escribir entre corchetes, a menudo se verá esta notación en Referencia de la Biblioteca.)
list.clear () Eliminar todos los elementos de la lista, igual al del a [:].
list.index (x) Devuelve el índice de la lista con un valor de x en el primer elemento. Si no hay ningún elemento coincidente devolverá un error.
list.count (x) Devuelve el número de veces x aparece en la lista.
list.sort () De los elementos en la lista para ser resuelto.
list.reverse () elementos invertidos en la lista.
list.copy () Devuelve una copia superficial de la lista es igual a un [:].

El siguiente ejemplo ilustra la mayor parte de la lista de métodos:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]

Nota: De manera similar a insertar, eliminar o modificar el método de ordenar la lista, etc valor de retorno.


Utilice la lista como una pila

El método de hacer una lista de listas se puede utilizar fácilmente como una pila, la pila como una estructura de datos específica, el primero en entrar en el último elemento que se libere (LIFO). Utilice el método append () puede añadir un elemento a la parte superior de la pila. Sin un índice explícito del método pop () puede recuperar un elemento de la parte superior de la pila. Por ejemplo:

>>> 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]

Utilice la lista como una cola

La lista también se puede utilizar como una cola, la cola es el primero en unirse a los elementos, el primero llevado a cabo, sin embargo, tomar esta lista ya que el propósito no es eficiente. Añadir al final de la lista de elementos o pop-up de velocidad, sin embargo, para insertar o expulsar de la velocidad de la cabeza no es rápido (porque todos los demás elementos tienen que pasar uno por uno) en la lista.

>>> 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'])

Las listas por comprensión

Las listas por comprensión proporcionan una forma concisa para crear listas de la secuencia. Algunas aplicaciones generalmente se aplican a cada elemento de una secuencia de las operaciones, con el resultado de que se obtiene como los elementos para generar una nueva lista, o crear secuencias determinadas de acuerdo a las condiciones de determinación.

Cada lista por comprensión son después de la expresión, a continuación, cero o más a favor o en caso de cláusulas. El resultado es una lista generada por el contexto posterior para y si de acuerdo con la expresión. Si desea que la fórmula de una tupla, debe utilizar paréntesis.

A continuación vamos a enumerar cada número por tres, para obtener una nueva lista:

>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]

Ahora jugamos pequeños trucos:

>>> [[x, x**2] for x in vec]
[[2, 4], [4, 16], [6, 36]]

Aquí se invoca un método de forma individual para cada elemento en una secuencia:

>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']

Podemos utilizar la cláusula if como un filtro:

>>> [3*x for x in vec if x > 3]
[12, 18]
>>> [3*x for x in vec if x < 2]
[]

Aquí están algunos demos en bicicleta y otras habilidades:

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]
[6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

Las listas por comprensión pueden utilizar expresiones complejas o funciones anidadas:

>>> [str(round(355/113, i)) for i in range(1, 6)]
['3.1', '3.14', '3.142', '3.1416', '3.14159']

comprensión de lista anidada

las listas de Python también se pueden anidar.

El siguiente ejemplo muestra la lista matriz de 3X4:

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

El ejemplo siguiente lista matriz de 3X4 a la lista de conversión 4X3:

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

Los siguientes ejemplos también se pueden utilizar los siguientes métodos:

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

Otro método:

>>> transposed = []
>>> for i in range(4):
...     # the following 3 lines implement the nested listcomp
...     transposed_row = []
...     for row in matrix:
...         transposed_row.append(row[i])
...     transposed.append(transposed_row)
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

del comunicado

Puede utilizar la instrucción del índice en lugar de por el valor para eliminar un elemento de una lista. Este es el uso de pop () devuelve un valor diferente. Puede utilizar la instrucción del para eliminar un recorte de la lista, o borrar la lista completa (nuestro método anterior de la presentación se le asigna un corte en la lista vacía). Por ejemplo:

>>> 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
[]

También puede eliminar la variable de instancia con Del:

>>> del a

Tuplas y secuencias

número tupla de valores separados por comas consiste, por ejemplo:

>>> 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))

Como se ve, en la salida de tuplas están encerrados todos los días entre paréntesis, con el fin de expresar adecuadamente la estructura anidada. Puede que no haya soportes o al entrar, pero por lo general se requieren los soportes (si la tupla es parte de una expresión mayor).


Conjunto

Una colección es una colección desordenada de elementos únicos. Las características básicas incluyen pruebas y eliminar elementos duplicados.

Se puede crear un conjunto de llaves ({}). Nota: Si desea crear un conjunto vacío, debe utilizar el conjunto () en lugar de {}, lo que crea un diccionario vacío, la siguiente sección vamos a introducir esta estructura de datos.

La siguiente es una simple demostración:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 删除重复的
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 检测成员
True
>>> 'crabgrass' in basket
False

>>> # 以下演示了两个集合的操作
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a 中唯一的字母
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 在 a 中的字母,但不在 b 中
{'r', 'd', 'b'}
>>> a | b                              # 在 a 或 b 中的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 在 a 和 b 中都有的字母
{'a', 'c'}
>>> a ^ b                              # 在 a 或 b 中的字母,但不同时在 a 和 b 中
{'r', 'd', 'b', 'm', 'z', 'l'}

Collection también el apoyo de la derivación de la fórmula:

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

diccionario

Otro tipo de datos útiles integrado en Python es el diccionario.

Una secuencia continua de índice entero, y esta diferencia es, diccionario de palabras clave indexadas palabras clave pueden ser de cualquier tipo inmutable, por lo general con una cadena o numérico.

La mejor manera de entenderla como un diccionario son pares clave => valor no ordenadas. En el mismo diccionario, las claves deben ser diferentes unos de otros.

Un par de llaves crea un diccionario vacío: {}.

Este es un simple ejemplo de la utilización de un diccionario:

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

dict (Constructor) para construir el diccionario directamente desde la lista de claves-tupla. Si usted tiene un patrón fijo, listas por comprensión especificar un determinado pares de valores clave:

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

Además, el diccionario se puede utilizar para crear una expresión para derivar cualquier diccionario de claves y valores:

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

Si la palabra clave es simplemente una cadena de pares de valores clave que utilizan argumentos clave a veces más convenientes para especificar:

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

técnicas de recorrido

Cuando se atraviesa en los diccionarios, el valor de la clave correspondiente y puede utilizar los elementos () método para la interpretación simultánea a cabo:

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

Cuando se atraviesa en la secuencia, el índice de posición y el valor correspondiente se pueden utilizar enumerate () función también recibir:

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

Al atravesar dos o más secuencias, se puede utilizar el zip () en combinación:

>>> 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.

Para recorrer una secuencia inversa, especifique primero la secuencia, y luego llamar a reversesd () Función:

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

Recorrido de una secuencia de acuerdo con el orden, el uso de la función ordenada () devuelve una secuencia ordenada, no modifica el valor original:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

Consulte la documentación