python有一个列表推导功能,可以在一行代码中实现强大的功能。
比如这段代码,求数字对应的字母,用for循环写:
CLASSIFICATION_LIST = {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H', 9: 'I', 10: 'J', 11: 'K',
12: 'N', 13: 'O', 14: 'P', 15: 'Q', 16: 'R', 17: 'S', 18: 'T', 19: 'U', 20: 'V', 21: 'X',
22: 'Z'}
select_list = [1,3,5,9,15,17,20,22]
c_list = []
for s in select_list:
c_list.append(CLASSIFICATION_LIST[s])
用列表推导式:
c_list = [CLASSIFICATION_LIST[s] for s in select_list]
输出结果:A,C,E,I,Q,S,V,Z
简单吧!!
语法结构如下:
new_list = [expression for member in iterable if conditional]
(1)expression:表达式,对member的操作
(2)member:列表或可迭代对象中的对象或值
(3)iterrable:列表、集合。。。可一次返回其member的对象
(4)条件表达式,过滤列表不需要的值
一句话:从可迭代对象中取一个(满足条件的)元素,把它传入表达式计算后,放在列表里。
同理,字典与集合也有相应的字典推导式和集合推导式:
new_dict = {x:x**2 for x in a if x*2==0}
new_set = {x**3 forx in a if x%3==0}