Python

Listas

Listas

  • Los literales de listas se escriben entre corchetes [ ]

colors = ['red', 'blue, 'green']
print(colors[0])    # red
print(colors[2])    # green
print(len(colors))  # 3

Listas

Asignación con el = en las listas no hace una copia. En vez de eso, hace que las 2 variables apunten a la misma lista en memoria

b = colors   ## No copia la lista

Listas

  • La "lista vacía" es sólo un par de corchetes vacíos []
  • El '+' Funciona para unir 2 listas, así [1,2] + [3,4] da [1,2,3,4]
  • Se pueden borrar elementos de una lista con del, por ejemplo:
lista = ['lunes', 'martes', 'miercoles']
del lista[1] # elimina el martes

FOR e IN

Es una forma fácil de recorrer elementos de una lista (u otra colección)

Recordar utilizar nombres significativos para la variable usada en el for

La construcción IN es en sí misma una manera fácil de ver si un elemento aparece en una lista

FOR e IN

valor in colección verifica si el valor está en la colección, retornando True/False

  lista = ['larry', 'curly', 'moe']
  if 'curly' in lista:
    print 'vamos todavía!'

Range

  • La función range(n) devuelve los números 0, 1, ..., n-1
  • range(a, b) retorna a, a+1, ..., b-1
  • La combinación del bucle for y la función range() te permite construir un bucle numérico tradicional

Hay una variante, xrange(), que internamente funciona diferente para que sea más rápida que range en casos donde la performance es clave. En python 3 range tiene la misma performance que xrange

Bucle While

Funciona similar al de otros lenguajes, incluso soporta break y continue

break termina el bucle y continúa en la siguiente línea fuera del bloque

continue termina la iteración actual y vuelve al principio del bloque continuando con la siguiente iteración

  ## Acceder a cada 3er elemento de la lista a
  i = 0
  while i < len(a):
    print a[i]
    i = i + 3

Métodos de listas

  • lista.append(elem) Agrega 1 elemento al final de la lista. No retorna una nueva lista, modifica la original.
  • lista.insert(indice, elem) inserta el elemento en el índice dado, moviendo el resto a la derecha.
  • lista.extend(lista2) agrega los elementos en lista2 al final de lista. Usar + o += funciona de manera similar.
  • lista.index(elem) Busca el elemento desde el comienzo de la lista retornando su indice. Devuelve ValueError si el elemento no aparece.
  • lista.remove(elem) Busca la primera instancia del elemento dato y la elimina.
  • list.reverse() Invierte la lista (no la retorna)
  • list.pop(indice) Quita y retorna el elemento en el índice dado, o el de más a la derecha si no hay indice.

Métodos de Listas

Error común: los métodos de arriba no retornan una lista nueva, modifican la original

  list = [1, 2, 3]
  print list.append(4)   ## NO, no funciona, append() retorna None
  ## Patron correcto:
  list.append(4)
  print list  ## [1, 2, 3, 4]

Construcción de listas

Un patrón común es empezar con una lista vacía [], y después utilizar append() o extend() para agregarle elementos

  list = []          ## Empieza como lista vacía
  list.append('a')   ## Usar append() para agregar elementos
  list.append('b')

Slices con listas

Los slices funcionan igual que en las cadenas, y también pueden ser utilizadas para cambiar sub-partes de una lista

  list = ['a', 'b', 'c', 'd']
  print list[1:-1]   ## ['b', 'c']
  list[0:2] = 'z'    ## reemplaza ['a', 'b'] con ['z']
  print list         ## ['z', 'c', 'd']

Funciones key

Es posible  agregar un parámetro key para cada elemento de la lista antes de efectuar comparaciones

sorted("This is a test string from Andrew".split(), key=str.lower)

student_tuples = [
        ('john', 'A', 15),
        ('jane', 'B', 12),
        ('dave', 'B', 10),

sorted(student_tuples, key=lambda student: student[2])

Material extra de lectura

Made with Slides.com