Saltar a contenido

Funciones para datos

Python incluye varias funciones predefinidas para manipular sus tipos de datos predefinidos.

Identificar elemento - type()

El tipo de datos de una variable o estructura puede consultarse con la función type():

tipo de datos
tipo = type(elemento)  
print(tipo)

Enumerar elementos - enumerate()

La función enumerate() permite enumerar los elementos de una lista, convirtiéndolos a tupla. Require el uso de la función list() para recuperar la data.

enumerate()
lista = [1, "hola", True]

objeto = enumerate(lista) # tipo 'enumerate'
enumerados = list(objeto) # conversion a lista

# da '[(0, 1), (1, 'hola'), (2, True)]'

El índice inicial es 0 salvo indicación contraria. El valor elegido como índice inicial se pasa como segundo valor de entrada para la función enumerate():

enumerate()
lista = [1, "hola", True]
indice_inicial = 27

objeto = enumerate(lista, indice_inicial )  # tipo 'enumerate'
enumerados = list(objeto)   # conversion a lista

# da '[(27, 1), (28, 'hola'), (29, True)]'

El resultado final es una lista de tuplas que incluyen cada una un par indice-elemento. Ambos datos pueden extraerse fácilmente con la cláusula for:

Extraccion de valores
for indice, elemento in enumerados:
    print(f"Indice: {indice}; elemento: {elemento}")

# texto en pantalla
# 'Indice: 27; elemento: 1'
# 'Indice: 28; elemento: hola'
# 'Indice: 29; elemento: True'

Más sobre la cláusula for: control de flujo

Ordenamiento de datos - sorted()

La función sorted() ordena los elementos de listas y diccionarios, por defecto de manera ascendente / alfabética.

Ordenamiento de listas - sorted()
lista_ordenada = sorted( lista                )   # orden ascendente
lista_ordenada = sorted( lista, reverse=True  )   # orden descendente
lista_ordenada = sorted( lista, key = funcion_ordenamiento )   # criterio de ordenamiento definido por función
Esta función es muy similar al método sort() de las listas, de hecho tiene los mismos argumentos de entrada (reverse y key). El resultado es una lista con los elementos.

Esta función también sirve para ordenar diccionarios:

Ordenamiento de diccionario - por clave
lista_ordenada = sorted( diccionario                )   # orden ascendente
lista_ordenada = sorted( diccionario, reverse=True  )   # orden descendente
lista_ordenada = sorted( diccionario, key = funcion_ordenamiento )   # criterio de ordenamiento definido por función

La función presupone que el ordenamiento es por clave. Si en cambio se busca ordenar los elementos por valores hay que usar el método values():

Ordenamiento de diccionario - por valor
lista_ordenada = sorted( diccionario.values()                )   # orden ascendente
lista_ordenada = sorted( diccionario.values(), reverse=True  )   # orden descendente
lista_ordenada = sorted( diccionario.values(), key = funcion_ordenamiento )   # criterio de ordenamiento definido por función

El resultado en estos casos es una lista de tuplas con los pares clave-valor.

Conversion desde string - eval()

Para poder evaluar una variable str que representa sintácticamente un tipo de datos (una lista, un diccionario, etc.) se usa la función eval()

Función eval()
data = eval(string_datos)

Algunos ejemplos sencillos:

Función eval() - lista
texto = '["hola", 3]'
data = eval(texto)
type(data)      # da  "<class 'list'>"
Función eval() - diccionario
texto = '{"valor": 3}'
data = eval(texto)
type(data)      # da  <class 'dict'>

Esta función es útil, por ejemplo, para interpretar un string de datos procedente de un archivo de texto o de una página web.