最近在testerhome看别人写的接口框架,发现很多用到列表推导式,就在网上查了一下
列表推导式格式:newList=[x*2 for x in list if ****],list表示要循环的列表,for循环迭代list,if表示筛选条件,可以多个if条件是且的关系。把满足的值赋给for循环前面的用于生成新的列表,对于原来的列表无影响所以需要赋给新的变量。
例子1:
>>> list=[1,2,3,4,5,6,7,8]
>>> new_list=[x*2 for x in list ]
>>> print new_list
[2, 4, 6, 8, 10, 12, 14, 16]
这个最简单的把list所有的参数乘以2例子2:
>>> list=[1,2,3,4,5,6,7,8]
>>> new_list1=[x*x for x in list if x%2==0]
>>> print new_list1
[4, 16, 36, 64]
相对于例子1,增加一个if语句把可以被2整除的值取出来例子3:
>>> list=[1,2,3,4,5,6,7,8]
>>> new_list2=[x*x for x in list if x%2==0 if x>5]
>>> print new_list2
[36, 64]
多增加了一个if语句列子4:
>>> list_x=[1,2,3]
>>> list_y=['a','b','c']
>>> new_list3=[[x,y]for x,y in zip(list_x,list_y)]
>>> print new_list3
[[1, 'a'], [2, 'b'], [3, 'c']]
>>> print "zip(list_x,list_y):",zip(list_x,list_y)
zip(list_x,list_y): [(1, 'a'), (2, 'b'), (3, 'c')]
一共2个list,使用zip()函数把2个合并成一个,可以使用列表推到变成zip()后的元组变成列表