Explicación de las listas de Python: comprensión de Len, Pop, Index y List

Las listas en Python son similares a las matrices en JavaScript. Son uno de los tipos de datos integrados en Python que se utilizan para almacenar colecciones de datos.

Uso básico

Cómo crear una lista

Un vacío listse crea usando un par de corchetes:

>>> empty_list = [] >>> type(empty_list)  >>> len(empty_list) 0

A listse puede crear con elementos encerrando una lista de elementos separados por comas entre corchetes. Las listas permiten que los elementos sean de diferentes tipos (heterogéneos), pero más comúnmente son de un solo tipo (homogéneos):

>>> homogeneous_list = [1, 1, 2, 3, 5, 8] >>> type(homogeneous_list)  >>> print(homogeneous_list) [1, 1, 2, 3, 5, 8] >>> len(homogeneous_list) 6 >>> heterogeneous_list = [1, "Hello Campers!"] >>> print(heterogeneous_list) [1, "Hello Campers!"] >>> len(heterogeneous_list) 2

El listconstructor también se puede utilizar para crear list:

>>> empty_list = list() # Creates an empty list >>> print(empty_list) [] >>> list_from_iterable = list("Hello campers!") # Creates a list from an iterable. >>> print(list_from_iterable) ['H', 'e', 'l', 'l', 'o', ' ', 'c', 'a', 'm', 'p', 'e', 'r', 's', '!']

También puede utilizar la comprensión de listas para crear listas, que trataremos más adelante en este artículo.

Acceder a elementos en una lista

>>> my_list = [1, 2, 9, 16, 25] >>> print(my_list) [1, 2, 9, 16, 25]

Cero indexado

>>> my_list[0] 1 >>> my_list[1] 2 >>> my_list[2] 9

Envuelva alrededor de la indexación

>>> my_list[-1] 25 >>> my_list[-2] 16

Desembalaje de listas para python-3

>>> print(*my_list) 1 2 9 16 25

Las listas son mutables

listsson contenedores mutables. Los contenedores mutables son contenedores que permiten cambios en los objetos que contiene el contenedor.

Los elementos de a listse pueden extraer y reorganizar utilizando otro listcomo índice.

>>> my_list = [1, 2, 9, 16, 25, 34, 53, 21] >>> my_index = [5, 2, 0] >>> my_new_list = [my_list[i] for i in my_index] >>> print(my_new_list) [34, 9, 1]

Métodos de lista

len()

El len()método devuelve la longitud de un objeto, ya sea una lista, una cadena, una tupla o un diccionario.

len() toma un argumento, que puede ser una secuencia (como una cadena, bytes, tupla, lista o rango) o colección (como un diccionario, conjunto o conjunto congelado).

list1 = [123, 'xyz', 'zara'] # list print(len(list1)) # prints 3 as there are 3 elements in the list1 str1 = 'basketball' # string print(len(str1)) # prints 10 as the str1 is made of 10 characters tuple1 = (2, 3, 4, 5) # tuple print(len(tuple1)) # prints 4 as there are 4 elements in the tuple1 dict1 = {'name': 'John', 'age': 4, 'score': 45} # dictionary print(len(dict1)) # prints 3 as there are 3 key and value pairs in the dict1

index()

index() devuelve la primera aparición / índice del elemento en la lista dada como argumento de la función.

numbers = [1, 2, 2, 3, 9, 5, 6, 10] words = ["I", "love", "Python", "I", "love"] print(numbers.index(9)) # 4 print(numbers.index(2)) # 1 print(words.index("I")) # 0 print(words.index("am")) # returns a ValueError as 'am' is not in the `words` list

Aquí la primera salida es muy obvia, pero la segunda y la tercera pueden parecer confusas al principio. Pero recuerde que index()devuelve la primera aparición del elemento y, por lo tanto, en este caso, 1y 0son los índices donde 2y "I"aparecen primero en las listas, respectivamente.

Además, si un elemento no se encuentra en la lista, ValueErrorse devuelve a como en el caso de la indexación "am"en la wordslista.

Argumentos opcionales

También puede usar argumentos opcionales para limitar su búsqueda a una subsecuencia particular de la lista:

words = ["I", "am", "a", "I", "am", "Pythonista"] print(words.index("am", 2, 5)) # 4

Aunque el elemento se busca entre los índices 2 (inclusive) y 5 (no incluido), el índice devuelto se calcula en relación al comienzo de la lista completa en lugar del argumento de inicio.

pop()

El pop()método elimina y devuelve el último elemento de una lista.

Existe un parámetro opcional que es el índice del elemento que se eliminará de la lista. Si no se especifica ningún índice, pop()elimina y devuelve el último elemento de la lista.

Si el índice pasado al pop()método no está en el rango, lanza la IndexError: pop index out of rangeexcepción.

cities = ['New York', 'Dallas', 'San Antonio', 'Houston', 'San Francisco']; print "City popped is: ", cities.pop() # City popped is: San Francisco print "City at index 2 is : ", cities.pop(2) # City at index 2 is: San Antonio

Funcionalidad de pila básica

El pop()método se usa a menudo junto con append()para implementar la funcionalidad de pila básica en una aplicación de Python:

stack = [] for i in range(5): stack.append(i) while len(stack): print(stack.pop())

Comprensión de listas

La comprensión de listas es una forma de recorrer una lista para producir una nueva lista basada en algunas condiciones. Puede ser confuso al principio, pero una vez que te acostumbras a la sintaxis, es muy potente y rápido.

The first step in learning how to use list comprehension is to look at the traditional way of looping through a list. The following is a simple example that returns a new list of even numbers.

# Example list for demonstration some_list = [1, 2, 5, 7, 8, 10] # Empty list that will be populate with a loop even_list = [] for number in some_list: if number % 2 == 0: even_list.append(number) # even_list now equals [2, 8, 10]

First a list is created with some numbers. You then create an empty list that will hold your results from the loop. In the loop you check to see if each number is divisible by 2 and if so you add it the the even_list. This took 5 lines of code not including comments and white space which isn’t much in this example.

Now for the list comprehension example.

# Example list for demonstration some_list = [1, 2, 5, 7, 8, 10] # List Comprehension even_list = [number for number in some_list if number % 2 == 0] # even_list now equals [2, 8, 10]

Another example, with the same two steps: The following will create a list of numbers that correspond to the numbers in my_starting_list multiplied by 7.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8] my_new_list = [] for item in my_starting_list: my_new_list.append(item * 7)

When this code is run, the final value of my_new_list is: [7, 14, 21, 28, 35, 42, 49, 56]

A developer using list comprehension could achieve the same result using the following list comprehension, which results in the same my_new_list.

my_starting_list = [1, 2, 3, 4, 5, 6, 7, 8] my_new_list = [item * 7 for item in my_starting_list]

A simple formula to write in a list comprehension way is:

my_list = [{operation with input n} for n in {python iterable}]

Replace {operation with input n} with however you want to change the item returned from the iterable. The above example uses n * 7 but the operation can be as simple or as complex as necessary.

Replace {python iterable} with any iterable. Sequence types will be most common. A list was used in the above example, but tuples and ranges are also common.

List comprehension adds an element from an existing list to a new list if some condition is met. It is neater, but is also much faster in most cases. In some cases, list comprehension may hinder readability, so the developer must weigh their options when choosing to use list comprehension.

Examples of list comprehension with conditionals

The flow of control in list comprehensions can be controlled using conditionals. For example:

only_even_list = [i for i in range(13) if i%2==0]

This is equivalent to the following loop:

only_even_list = list() for i in range(13): if i%2 == 0: only_even_list.append(i)

List comprehension can also contain nested if conditions. Consider the following loop:

divisible = list() for i in range(50): if i%2 == 0: if i%3 == 0: divisible.append(i)

Using list comprehension this can be written as:

divisible = [i for i in range(50) if i%2==0 if i%3==0]

If-Else statement can also be used along with list comprehension.

list_1 = [i if i%2==0 else i*-1 for i in range(10)]

More Information:

  • The Best Python Code Examples