Empezando N día
Comprensión: expresiones utilizadas para generar rápida y fácilmente listas o diccionarios
-
Comprensión de listas
-
estructura basica
Lista = [expresión para variable en secuencia]
Genera una nueva lista, los elementos de la lista son el resultado de la expresión correspondiente a cada bucle
Es equivalente a:
Lista = []
para variable en secuencia:
List.append (expresión)
list1 = [10 for i in range(3)] print(list1) # [10, 10, 10] list2 = [2 * i for i in range(1, 4)] print(list2) # [2, 4, 6]
Ejercicio: Escriba una lista de comprensión para producir una lista de elementos que satisfagan las siguientes reglas: str0, str3, str6, ..., str99
list3=[f'str{i}'for i in range(0,100,3)] print(list3)
-
Estructura condicional
Lista = [expresión para variable en secuencia si declaración condicional]
Es equivalente a:
Lista = []
para variable en secuencia:
If declaración condicional:
List.append (expresión)
Ejercicio: Escriba una lista de comprensión para producir una lista de elementos que satisfagan las siguientes reglas: str1, str3, str6, ..., str99
método uno
list1=[f'str{i}' for i in range(1,100) if i % 3 == 0 or i == 1 ] print(list1)
Método 2: operador ternario
list2=['str1' if i == 0 else f'str{i}' for i in range(0,100,3)] print(list2)
-
Estructura de bucle múltiple 1:
Lista = [expresión para la variable 1 en la secuencia 1 para la variable 2 en la secuencia 2]
Es equivalente a:
Lista = []
para la variable 1 en la secuencia 1:
Para la variable 2 en la secuencia 2:
List.append (expresión)
-
Estructura de bucle múltiple 2:
Lista = [expresión para la variable 1 en la secuencia 1 si enunciado condicional para la variable 2 en la secuencia 2 Si enunciado condicional]
Es equivalente a:
Lista = []
para la variable 1 en la secuencia 1:
If declaración condicional:
Para la variable 2 en la secuencia 2:
If declaración condicional:
List.append (expresión)
-
# 集合推导式 a1 = { i for i in 'hello'} print(a1) # {'h', 'e', 'l', 'o'} # 元组和集合推导式 a2 = tuple(x * 2 for x in 'hello') print(a2) # ('hh', 'ee', 'll', 'll', 'oo') # 字典推导式 a3 = { x: x * 2 for x in 'hello'} print(a3) # {'h': 'hh', 'e': 'ee', 'l': 'll', 'o': 'oo'} a4 = dict((x, x * 2) for x in 'hello') print(a4) # {'h': 'hh', 'e': 'ee', 'l': 'll', 'o': 'oo'} # 练习3 通过字典推导式交换一个字典的键和值 dic={'a':10,'b':20,'c':30} dic1 = { 'a': 10, 'b': 20, 'c': 30} # dic12 = dict((dic1[i], i) for i in dic1) dic2 = { dic1[i]: i for i in dic1} print(dic2) # 通过字典推导式交换一个字典的键和值 如果值是可变的在新的字典中不交换 dic3 = { 'a': 10, 'b': 20, 'c': 30, 'd': [10, 20]} dic4 = dict((i,dic3[i]) if type(dic3[i]) in (list,set,dict) else (dic3[i],i) for i in dic3) print(dic4)