列表推导:可根据某个序列或可迭代对象派生出一份新的列表。
- 列表推导要比内置的map与filter函数清晰,因为其不用另外定义lambda表达式。
a = [1,2,3,4]
# 求a列表下每个元素的平方
squ = [x**2 for x in a]
# map用法:alt = map(lambda x:x**2,a)
- 列表推导可以很容易地跳过原列表中的某些数据,例如改用map实现,必须搭配filter才能实现。
a = [1,2,3,4]
# 求a列表下偶数元素的平方
even_squ = [x**2 for x in a if x % 2 == 0]
- 字典与集合也可以通过推导来创建,分别叫作字段推导与集合推导
a = [1,2,3,4]
# 求a列表下偶数元素的平方
even_squ_dict = {x:x**2 for x in a if x % 2 == 0}
>>> {2:4,4:16}
even_squ_set = {x**2 for x in a if x % 2 == 0}
>>> {4,16}
# 若用map与filter实现,必须要调用相应的构造器(constructor),代码较长
# alt_dict = dict(map(lambda x :(x,x**2),filter(lambda x:x % 2 == 0,a)))
# alt_srt = set(map(lambda x :x**2,filter(lambda x:x % 2 == 0,a)))