<jupyter_start><jupyter_text>Colecciones  Listas`[]`<jupyter_code>l_numeritos = [47, 8123, 21]
l_letras = ['a', 'b', 'c', 'd', 'e']
l_cuenta = list(range(10))<jupyter_output><empty_output><jupyter_text>Métodos útiles para manipular una lista- `append(elemento)`: Añade un elemento a una lista- `+=`: Une dos listas- `pop(indice)`: Remueve el elemento en el índice y lo devuelve.<jupyter_code>l_numeritos += [171, 9812]
l_numeritos.append(5666)
l_numeritos
l_numeritos.pop(2)<jupyter_output><empty_output><jupyter_text>Métodos para recorrer listas- `enumerate`: Genera un indice que se devuelve con la lista- `zip`: Une dos listas como una cremallera<jupyter_code>l_listas = [[1,2], [47, 29], [209, 123]]
for i, x in enumerate(l_listas):
    print(i, x) 
for a, b in zip(l_numeritos, l_letras):
    print(a,b)<jupyter_output>47 a
8123 b<jupyter_text>Listas intensionales<jupyter_code>l_al_cubo = [i ** 3 for i in l_cuenta]
l_al_cubo
l_al_cubo = []
for i in l_cuenta:
    l_al_cubo.append(i**3)
l_al_cubo
l_impares_al_cubo = [i ** 3 for i in l_cuenta  if i % 3 == 0]
l_impares_al_cubo
l_cositas = [i ** 2 if i % 2 == 0 else i * 3 for i in l_cuenta]
l_cositas<jupyter_output><empty_output><jupyter_text>TuplasLas tuplas son como las listas pero son inmutables. Una vez asignado un valor no se pueden modificar<jupyter_code>t_numeros = tuple(l_cositas)
t_numeros
t_numeros[4] = 7<jupyter_output><empty_output><jupyter_text>Cuando devolvemos más de un valor en una función, estamos devolviendo una tupla.<jupyter_code>def my_f(x):
    return x, x**2

my_f(4), type(my_f(4))<jupyter_output><empty_output><jupyter_text>Diccionarios`{}` Representan información en formato `llave`: `valor`<jupyter_code>d_ciudades = {
    'nombre': 'Valencia',
    'poblacion': 700_000,
    'latitud': 49,
    'longitud': 40,
    'alcaldes': [
        {'nombre': '<NAME>', 'mandato': '2000-2016'},
        {'nombre': '<NAME>', 'mandato': '2016-2024'}
    ] 
}
d_ciudades['s']<jupyter_output><empty_output><jupyter_text>Métodos útiles para manipular un diccionario- `setdefault(llave, default)`: Accede al campo `llave` del diccionario, si no existe lo inserta `default`.<jupyter_code>d_ciudades['cuenta'] = d_ciudades.setdefault('cuenta', 0) + 1
d_ciudades['cuenta']
len(d_ciudades)<jupyter_output><empty_output><jupyter_text>Métodos útiles para iterar sobre un diccionario- `.keys()`: Itera sobre las llaves- `.values()`: Itera sobre los valores- `.items()`: Itera sobre las llaves y los valores<jupyter_code>for x in d_ciudades:
    print(x, d_ciudades[x])
for k, v in d_ciudades.items():
    print(k, v)
print('--- LLAVES ---')
for k in d_ciudades.keys():
    print(k)

print('--- VALORES ---')
for v in d_ciudades.values():
    print(v)

print('--- ZIP! ---')
for k, v in zip(d_ciudades.keys(), d_ciudades.values()):
    print(k, v)<jupyter_output>--- LLAVES ---
nombre
poblacion
latitud
longitud
alcaldes
s
--- VALORES ---
Valencia
700000
49
40
[{'nombre': '<NAME>', 'mandato': '2000-2016'}, {'nombre': '<NAME>', 'mandato': '2016-2024'}]
40
--- ZIP! ---
nombre Valencia
poblacion 700000
latitud 49
longitud 40
alcaldes [{'nombre': '<NAME>', 'mandato': '2000-2016'}, {'nombre': '<NAME>', 'mandato': '2016-2024'}]
s 40<jupyter_text>Patrones con diccionarios- Bloque de ifs<jupyter_code>colecciones = {
    'alimentacion': [],
    'limpieza': []
}

tipo = "alimentacion"
productos = "pimientos"

print(colecciones)

if tipo in colecciones.keys(): #  validacion de entradas
    colecciones[tipo].append(productos)
else:
    print(f'{tipo} no está en las colecciones disponibles: {coleccion.keys()}')

print(colecciones)
def saludar_hombre(x):
    return f'hola macho {x}'

def saludar_mujer(x):
    return f'hola bella {x}' # "hola bella %s" % x

dispatcher = {
    'hombre': saludar_hombre,
    'mujer': saludar_mujer
}

sexo = 'hombre'
nombre = "Ballester"

dispatcher[sexo](nombre)<jupyter_output><empty_output><jupyter_text>SetsComo una lista pero sin orden y los elementos son únicos.<jupyter_code>l_colores = ['rojo', 'verde', 'rojo', 'azul', 'amarillo']
s_colores = set(l_colores)
s_otros = set(['rojo', 'cyan', 'naranja'])
s_colores
s_colores.add('amarillo')
s_colores<jupyter_output><empty_output><jupyter_text>Métodos útiles para manipular un set- `.intersection()` y `&`: Compara dos conjuntos y se queda con los que pertenecen a ambas listas- `.union()` y `|`: Une dos conjuntos sin repetición.<jupyter_code>s_colores & s_otros
s_colores.intersection(s_otros)
s_colores.union(s_otros)
s_colores | s_otros<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1512939615129396, 'fraction_numerical': 0.030524220305242204, 'mean_word_length': 5.563134978229318, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 53, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '12', 'dir': 'jupyter-structured-clean-dedup', 'id': '612594', 'license': 'CC0-1.0', 'n_tokens_mistral': 2001, 'n_tokens_neox': 1895, 'n_words': 427, 'path': 'notebooks/02_colecciones.ipynb', 'repo_name': 'j6e/Introduccion-y-Trucos-de-Python', 'size': '4548'}