列表解析的特点就是速度快,形式简介。
列表解析的形式 [expression + for + if]
其中 for 可以是多个;if部分可以没有,即使有,千万不要加else部分)
- 例1
给定一个列表arr = [1,2,3,4,5,6,7,8], 把小于5的所有数字放到列表left,其余的放到列表right(快速排序算法用的到)
left,right = [] ,[]
[left.append(i) if i <5 else right.append(i) for i in arr]
- 注: left.append(i) if i <5 else right.append(i) 是Python的三项表达式,所以上例中的列表解析是用的
expression + for 的形式
- 例2
给定一个列表arr = [1,2,3,4,5,6,7,8],把其中偶数元素提取出来。
[i for i in arr if i%2==0]
- 注: 这个例子采用的是 expression + for + if 的形式。
[(i,j) for i in range(3) for j in range(3)]
- 注: 这个例子采用的是 expression + for + for 的形式,也就是开头说的,for可以有多个,但不建议超过三个。