Python中的解析
Python支持各种解析(comprehension)操作,比如列表解析、集合解析、元组解析、字典解析。它们根据某些元素来创建(推导)出一个新的列表、集合、元组、字典等。所以有的地方也称为推导,比如列表推导、集合推导等
列表解析
列表解析:是将for循环和创建新元素的代码合成一行,并自动附加新的元素
具体解释:
- x ∈ N表示的是装元素的容器,这个容器里的元素是解析时被迭代的对象
- x是变量,是容器中的元素,,对应于列表解析中的i
- x² > 3表示的是谓词,是可选的条件判断式,是可选的
- 2 * x表示的是外部表达式,类似于循环代码块
- {}意味着外部表达式的元素所存放的容器是集合容器,对应于列表解析中的[],表示新生成的元素是列表中的元素
具体例子:
下面用for循环写一个简单小例子。
lst=[]
for i in range(0,11):
i*=i
lst.append(i)
print(lst)
下面是换作列表解析:
lst1=[j**2 for j in range(0,11)]
print(lst1)
结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
例子2 嵌套列表解析
###正常嵌套
lst2=[]
for i in range(10):
if i%2==0:
for j in range(15):
if j%3==0:
lst2.append((i,j))
print(lst2)
### 等价为列表解析
lst3=[(i,j) for i in range(10) if i%2==0 for j in range(15) if j%3==0]
print(lst3)
结果:
[(0, 0), (0, 3), (0, 6), (0, 9), (0, 12), (2, 0), (2, 3), (2, 6), (2, 9), (2, 12), (4, 0), (4, 3), (4, 6), (4, 9), (4, 12), (6, 0), (6, 3), (6, 6), (6, 9), (6, 12), (8, 0), (8, 3), (8, 6), (8, 9), (8, 12)]
[(0, 0), (0, 3), (0, 6), (0, 9), (0, 12), (2, 0), (2, 3), (2, 6), (2, 9), (2, 12), (4, 0), (4, 3), (4, 6), (4, 9), (4, 12), (6, 0), (6, 3), (6, 6), (6, 9), (6, 12), (8, 0), (8, 3), (8, 6), (8, 9), (8, 12)]