解析操作可以很方便地生成一个有规律的列表、字典、集合,区别于常规的定义,其内部可以嵌入一个或者多个for
、if
子句。根据for
、if
的计算结果返回一个列表。并且可以作为从已知列表、集合、字典中筛选符合要求数据的工具(可以避免循环遍历每个元素筛选,提高效率)。
示例代码:
用于定义
a = [i * i for i in range(1, 10, 2)]
points = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
用于在列表、字典、集合中筛选数据
from random import randint
print(u"列表解析: ")
data = [randint(-10, 10) for i in range(10)]
print(data)
b = [x for x in data if x >= 0]
print(b)
print(u"字典解析: ")
my_dict = {x: randint(60, 100) for x in range(1, 21)}
print(my_dict)
res_dict2 = {k: v for k, v in my_dict.items() if v >= 90}
print(res_dict2)
print(u"集合解析: ")
my_set = set(data)
print(my_set)
res_set = {e for e in my_set if e <= 0}
print(res_set)