36.列表推导式和字典生成式
一、列表推导式
[expression for item1 in iterable1 if condition1
for item2 in iterable2 if condition2
...
for itemN in iterableN if conditionN
]
类似于
res=[]
for item1 in iterable1:
if condition1:
for item2 in iterable2:
if condition2
...
for itemN in iterableN:
if conditionN:
res.append(expression)
print(F" {[i for i in range(10)]}")
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(F"{[i**2 for i in range(10)]}")
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
二、字典生成式
print({i: i**2 for i in range(10)})
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
三、zip()方法
keys = ['name', 'age', 'gender']
values = ['lwx', 18, 'male']
res = zip(keys, values)
print(zip(keys,values))
info_dict = {k: v for k, v in res}
print(info_dict)
# <zip object at 0x02B394B8>
# {'name': 'lwx', 'age': 18, 'gender': 'male'}
通过解压缩函数生成一个字典
info_dict = {'name': 'lwx', 'age': 18, 'gender': 'male'}
print(f"info_dict.keys(): {info_dict.keys()}")
print(f"info_dict.values(): {info_dict.values()}")
res = zip(info_dict.keys(), info_dict.values())
print(F"zip(keys,values): {zip(info_dict.keys(),info_dict.values())}")
info_dict = {k: v for k, v in res}
print(f"info_dict: {info_dict}")
# info_dict.keys(): dict_keys(['name', 'age', 'gender'])
# info_dict.values(): dict_values(['lwx', 18, 'male'])
# zip(keys,values): <zip object at 0x00D395A8>
# info_dict: {'name': 'lwx', 'age': 18, 'gender': 'male'}