Operación de truco de Python: ocho formas de conectar listas

Hay muchas (y cada vez más) funciones avanzadas en el lenguaje Python, que son muy populares entre los entusiastas de Python. A los ojos de estas personas, aquellos que pueden escribir funciones avanzadas que los desarrolladores normales no pueden entender son maestros y dioses.

Pero tienes que saber que en el trabajo en equipo, lucir habilidades es un tabú.

¿Por qué dices eso? Déjame hablar de mi opinión:

  1. Cuanto más simple sea el código y más clara la lógica, menos propenso a errores;
  2. En el trabajo en equipo, su código no solo lo mantiene usted. Es una buena moraleja reducir el costo de leer / comprender la lógica del código.
  3. El código simple solo usará el azúcar sintáctico más básico, y las funciones avanzadas complejas tendrán más dependencias (como las versiones de idioma)

Este artículo es el tercer contenido de la " Serie de tecnología Hyun " En esta serie, resumiré y contaré las increíbles operaciones que he visto. Aquí, si eres un entusiasta de Python, puedes aprender algunas habilidades de codificación interesantes. Al mismo tiempo, leer estos contenidos puede ayudarlo a leer el código de otras personas.

1. La adición más intuitiva

+Se agregan múltiples listas de uso , debe saber, no hay mucho que decir.

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> list01 + list02 + list03
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 

2. Con itertools

Itertools tiene un módulo incorporado muy poderoso en Python, que se usa específicamente para manipular objetos iterables.

En el artículo anterior también se introdujo, utilizando la itertools.chain()función primero iterable (en este caso es una lista) se conectan en serie para formar un iterable más grande.

Finalmente, usa list para convertirlo en una lista.

>>> from itertools import chain
>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> list(chain(list01, list02, list03))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

3. Utilice * para desembalar

En la operación xuanji de Python (02): El diccionario combinado siete métodos mencionados **se puede descomprimir como diccionario.

Y es similar, usar *descomprime la lista. *Y se **utiliza cuando la función está definida, provista de un parámetro variable.

Ahora lo uso por separado para fusionar varias listas.

Los ejemplos son los siguientes:

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>>
>>> [*list01, *list02]
[1, 2, 3, 4, 5, 6]
>>>

4. Utilice extender

En el diccionario, use la actualización para lograr la actualización in situ, y en la lista, use extender para lograr la autoexpansión de la lista.

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>>
>>> list01.extend(list02)
>>> list01
[1, 2, 3, 4, 5, 6]

5. Utilice listas de comprensión

Existe una forma muy Pythonnic de generar listas, conjuntos y diccionarios en Python.

Esas son listas de comprensión, comprensión de conjuntos y comprensiones de diccionario, que suelen ser las favoritas de los entusiastas de Python. Así que el tema de hoy: fusión de listas, ¿pueden las listas por comprensión aún ser competentes?

Por supuesto, el código de muestra específico es el siguiente:

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> [x for l in (list01, list02, list03) for x in l]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

6. Utilice heapq

Heapq es un módulo estándar de Python, que proporciona la implementación del algoritmo de clasificación de montones.

Hay un método de combinación en este módulo, que se puede utilizar para combinar varias listas, como se muestra a continuación

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> from heapq import merge
>>>
>>> list(merge(list01, list02, list03))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> 

Cabe señalar que además de fusionar varias listas, heapq.merge también ordenará la lista fusionada final.

>>> list01 = [2,5,3]
>>> list02 = [1,4,6]
>>> list03 = [7,9,8]
>>> 
>>> from heapq import merge
>>> 
>>> list(merge(list01, list02, list03))
[1, 2, 4, 5, 3, 6, 7, 9, 8]
>>> 

Su efecto es equivalente a la siguiente línea de código:

sorted(itertools.chain(*iterables))

Si desea una lista que esté siempre ordenada, piense en heapq.merge por primera vez, ya que utiliza la clasificación de montón, que es muy eficiente. Pero si no desea obtener una lista ordenada, no la use.

7. Con la ayuda de métodos mágicos.

En el artículo anterior, el método mágico se introdujo por completo.

Una guía muy completa de métodos mágicos de Python fáciles de entender (encendido)

Una guía muy completa de métodos mágicos de Python fáciles de entender (parte 2)

Hay un método mágico que es __add__, de hecho, cuando usamos el primer método list01 + list02 interno actuando realmente __add__sobre este método mágico.

Entonces los siguientes dos métodos son realmente equivalentes

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> 
>>> list01 + list02
[1, 2, 3, 4, 5, 6]
>>> 
>>> 
>>> list01.__add__(list02)
[1, 2, 3, 4, 5, 6]
>>> 

Tomando prestada esta característica mágica, podemos reducir este método para fusionar varias listas. El código de muestra es el siguiente

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> from functools import reduce
>>> reduce(list.__add__, (list01, list02, list03))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

8. Utilice el rendimiento de

En un artículo muy temprano ( Programación concurrente 08 | Comprensión profunda del rendimiento a partir de la sintaxis ), presenté en detalle el significado y el uso del rendimiento.

Después de obtener de, se puede seguir un objeto iterable para iterar y devolver cada elemento.

Por lo tanto, podemos personalizar la función de una herramienta para una lista combinada como la siguiente.

>>> list01 = [1,2,3]
>>> list02 = [4,5,6]
>>> list03 = [7,8,9]
>>>
>>> def merge(*lists):
...   for l in lists:
...     yield from l
...
>>> list(merge(list01, list02, list03))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>

Recomiendo mi libro electrónico original " PyCharm Chinese Guide ", que contiene una gran cantidad (300) de ilustraciones , está bien hecho y es digno de una colección de todos los ingenieros de Python.

La dirección es: http://pycharm.iswbm.com

Supongo que te gusta

Origin blog.csdn.net/weixin_36338224/article/details/109037074
Recomendado
Clasificación