推导式可以简化对数据的处理,让代码简洁的同时还具有很高的可读性,这在Python中非常常见。
列表推导式
通过列表推导式可以对列表中的所有元素都进行统一的操作来获得一个全新的列表(原列表不发生变化),形式如[处理方式 for 元素 in 列表]
,其中的处理方式可以是任何操作:
>>> a=[1,2,3,4]
>>> [i*2 for i in a]
[2, 4, 6, 8]
>>> a
[1, 2, 3, 4]
>>> [(i*2,i+10) for i in a]
[(2, 11), (4, 12), (6, 13), (8, 14)]
可以通过加上if语句来过滤掉原列表中的一些元素:
>>> a=[1,2,3,4]
>>> [i*2 for i in a if i>2]
[6, 8]
字典推导式
我们可以通过推导式来创建一个字典,不过字典推导式的括号是花括号:
>>> a
[1, 2, 3, 4]
>>> { "str"+str(i):i for i in a }
{"str3": 3, "str1": 1, "str4": 4, "str2": 2}
运用字典推导式有一个妙用,就是可以调换键和值的位置:
>>> a={"one":1,"two":2,"three":3}
>>> {value:key for key,value in a.items()}
{1: "one", 2: "two", 3: "three"}
注:确保值也是不可变类型,例如字符串、元组等
集合推导式
集合推导式与字典推导式类似,不过只有一个值而不是键值对:
>>> a={1,2,3,4,5}
>>> {i**2 for i in a if i%2==1}
{1, 9, 25}