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'}
posted @ 2020-03-25 18:17  祥SHAO  阅读(168)  评论(0编辑  收藏  举报