什么是列表推导式?
列表推导式提供了一种简洁的方法创建列表;
列表推导式可以使用简洁的方式来快速生成满足特定需求的列表;
# 公式
【 表达式 for 变量 in 序列或迭代对象 条件】
举例:
# 如果不用列表推导式,怎么添加新的数据到新的列表中?
# (将循环出来的偶数的平方加入列表中)
>>> newlist = []
>>> for x in range(10):
... if x%2 == 0:
... newlist.append(x*x)
...
>>> newlist
[0, 4, 16, 36, 64]
>>>
# 使用列表推导式
>>> newlist = [x*x for x in range(10) if x%2 == 0]
>>> newlist
[0, 4, 16, 36, 64]
>>>
列表推导式的应用
嵌套列表的平铺
# 常规循环实现
>>> mylist = [[1,2,3],[4,5,6],[7,8,9]]
>>> mylist1 = []
>>> for a in mylist:
... for b in a:
... mylist1.append(b)
...
>>> mylist1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
# 使用列表推导式实现嵌套列表的平铺
>>> mylist3 = [b for a in mylist for b in a]
>>> mylist3
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
过滤元素,只取偶数部分
# 分布式操作
>>> mylist = [[1,2,3],[4,5,6],[7,8,9]]
>>> mylist1 = []
>>> for a in mylist:
... for b in a:
... if b%2 == 0:
... mylist1.append(b)
...
>>> mylist1
[2, 4, 6, 8]
>>>
# 使用列表推导式
>>> mylist3 = [b for a in mylist for b in a if b%2 ==0]
>>> mylist3
[2, 4, 6, 8]
>>>
列表推导式与函数的结合
# 求n>0的数,奇数偶数返回的值不一样
>>> def func(n):
... if n%2==0:
... n = n*n
... else:
... n = n+1
... return n
...
>>> [func(n) for n in [-1,-2,1,2] if n>0]
[2, 4]
>>>
# 利用公式进行转换
【 表达式 for 变量 in 序列或迭代对象 条件】
>>> list4 = [n*n if n%2==0 else n+1 for n in [-1,-2,1,2] if n>0 ]
>>> list4
[2, 4]
>>>