1.列表解析式
语法:[返回值 for 元素 in 可迭代对象 if 条件]
a = [i for i in range(10) if i % 3 == 0]
输出内容:[0, 3, 6, 9]
该表达式返回了一个新的列表,元素就是迭代循环的[0,10),等价于下面的写法
b = []
for i in range(10):
if i % 3 == 0:
b.append(i)
同样也支持返回值的处理
c = [(i+1)*3 for i in range(10) if i % 3 == 0]
2.字典解析式
语法:{key:value for 元素 in 可迭代对象 if 条件}
d = {i: i + 1 for i in range(10)}
# 该解析式生成了一组新的字典:{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}
遍历字典的key和value,key对应解析式返回中的x,value对应解析式返回中的x+1
dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
dict_values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
该字典解析式等价于:
f = {}
for i in range(10):
f[i] = i+1
# 字典解析式包含条件语句
d = {x: x + 1 for x in range(10) if x % 3 == 0}
# 该解析式返回字典:{0: 1, 3: 4, 6: 7, 9: 10}
3.总结
列表和字典解析式是一种语法糖,优化代码,减少了一定的代码量,在操作过程中,方便我们对于一些数据的构造。