Saltar al contenido

Lista de comprensiones en Python – PythonForBeginners.com

Las listas por comprensión proporcionan una forma concisa de crear listas.

Consiste en corchetes que contienen una expresión seguida de una cláusula for, luego
cero o más cláusulas for o if. Las expresiones pueden ser cualquier cosa, lo que significa que puedes
poner todo tipo de objetos en listas.

El resultado será una nueva lista resultante de evaluar la expresión en el
contexto de las cláusulas for y if que le siguen.

La comprensión de la lista siempre devuelve una lista de resultados.

Si solías hacerlo así:

new_list = []
for i in old_list:
    if filter(i):
        new_list.append(expressions(i))

Puede obtener lo mismo utilizando la comprensión de listas. ¡Observe que el método de adición ha desaparecido!

new_list = [expression(i) for i in old_list if filter(i)]

Sintaxis

La comprensión de la lista comienza con un ‘[‘ and ‘]’, corchetes, para ayudarte a recordar que el
el resultado será una lista.

La sintaxis básica utiliza corchetes.

[ expression for item in list if conditional ]

Esto es equivalente a:

for item in list:
    if conditional:
        expression

Analicemos esto y veamos qué hace.

      
new_list = [expression(i) for i in old_list if filter(i)]

lista nueva
La nueva lista (resultado).

expresión (i)
La expresión se basa en la variable utilizada para cada elemento de la lista anterior.

porque yo en old_list
La palabra para seguida del nombre de la variable a usar, seguida de la palabra en el
lista antigua.

si filtro (i)
Aplicar un filtro con una declaración If.

Esta Blog muestra un ejemplo de cómo desglosar visualmente la comprensión de la lista:

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

new_range = [i * i for i in range(5) if i % 2 == 0]

Que corresponde a:

* resultado * = [*transform* *iteration* *filter* ]

El operador * se usa para repetir. La parte del filtro responde a la pregunta si el
el artículo debe transformarse.

Ejemplos de

Ahora, cuando conozcamos la sintaxis de las listas por comprensión, mostremos algunos ejemplos y
cómo puedes usarlo.

Crea una lista simple

Comencemos fácilmente creando una lista simple.

x = [i for i in range(10)]
print x

# This will give the output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Así es como puede crear una lista simple.

Cree una lista usando bucles y comprensión de listas

Para el siguiente ejemplo, suponga que queremos crear una lista de cuadrados. Empiece con una lista vacía.

# You can either use loops:
squares = []

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

# Or you can use list comprehensions to get the same result:
squares = [x**2 for x in range(10)]

print squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Solo recuerda la sintaxis: [ expression for item in list if conditional ]

Multiplicar partes de una lista

Multiplique cada parte de una lista por tres y asígnela a una nueva lista.

list1 = [3,4,5]
 
multiplied = [item*3 for item in list1] 
 
print multiplied 
[9,12,15]

Observe cómo el elemento * 3 multiplica cada pieza por 3.

Muestra la primera letra de cada palabra

Tomaremos la primera letra de cada palabra y haremos una lista con ella.

listOfWords = ["this","is","a","list","of","words"]

items = [ word[0] for word in listOfWords ]

print items

La salida debe ser: [‘t’, ‘i’, ‘a’, ‘l’, ‘o’, ‘w’]

Convertidor de mayúsculas / minúsculas

Vamos a mostrar lo fácil que puede convertir letras minúsculas / mayúsculas.

>>> [x.lower() for x in ["A","B","C"]]
['a', 'b', 'c']

>>> [x.upper() for x in ["a","b","c"]]
['A', 'B', 'C']

Imprimir números solo de una cadena determinada

Este ejemplo muestra cómo extraer todos los números de una cadena.

string = "Hello 12345 World"
numbers = [x for x in string if x.isdigit()]
print numbers

>> ['1', '2', '3', '4', '5']

Cambie x.isdigit () por x.isalpha () si no desea ningún número.

Analizar un archivo usando la comprensión de listas

En este ejemplo, podemos ver cómo obtener líneas específicas de un archivo de texto.

Cree un archivo de texto y coloque algo de texto en él.

esta es la linea 1
esta es la linea 2
esto es line3
esto es line4
esta es line5

Guarde el archivo como test.txt

# Then create the filter by using list comprehension:

fh = open("test.txt", "r")

result = [i for i in fh if "line3" in i]

print result

Producción: [‘this is line3
‘]

Usar la comprensión de listas en funciones

Ahora, veamos cómo podemos usar la comprensión de listas en funciones.

# Create a function and name it double:
def double(x):
  return x*2

# If you now just print that function with a value in it, it should look like this:
>>> print double(10)
20

Podemos usar fácilmente la comprensión de listas en esa función.

>>> [double(x) for x in range(10)]

print double
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# You can put in conditions:

>>> [double(x) for x in range(10) if x%2==0]
[0, 4, 8, 12, 16]

# You can add more arguments:

>>> [x+y for x in [10,30,50] for y in [20,40,60]]
[30, 50, 70, 50, 70, 90, 70, 90, 110]

Vea cómo puede poner condiciones y agregar más argumentos.

Artículos Relacionados

Listas de Python

Manipulación de listas en Python

Fuentes

http://docs.python.org/2/tutorial/datastructures.html

http://www.dalkescientific.com/writings/NBN/list_comps.html

http://effbot.org/zone/python-list.htm

http://blog.cdleary.com/2010/04/learning-python-by-example-list-comprehensions/

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.