列表生成式,主要是Python内置的一种极其强大的生成list的表达式。
下面先看一个例子,如果要生成一个1-9的list,我们可用python的内置函数range完成
list = range(1,10)
print list
# 结果
[1, 2, 3, 4, 5, 6, 7, 8, 9]
从上述代码可看出,这样很方便,但如果要生成[1*1,2*2,3*3,4*4,…,9*9]怎么做呢?
list =[]
for i in range(1,10):
list.append(i*i)
print list
# 结果
[1, 4, 9, 16, 25, 36, 49, 64, 81]
从上述代码中也可很快捷的得到想要的结果,但是从代码中可发现,每次要生成一个新的数字时就需要调用list里面的append方法,这9个数则要调用9次,耗时耗空间,要是有更多的数就会更慢,下面再看看列表生成式的方法。
list=[x*x for x in range(1,9)]
print list
# 结果
[1, 4, 9, 16, 25, 36, 49, 64, 81]
从上面可看到,利用列表生成式只用一行代码便可完成理想的操作,而且列表生成式会将全部的数据放在内存中运行,速度会更快。
当然,列表生成式也可加上判断,便可进行筛选
# 筛选奇数
list=[x*x for x in range(1,9) if x%2 != 0]
print list
# 结果
[1, 9, 25, 49]
两个字典连接的列表生成式
dict = {'name':'xiaoming','age':20,'id':9527}
list=[str(k)+' is '+str(v) for k,v in dict.iteritems()]
print list
# 结果
['age is 20', 'name is xiaoming', 'id is 9527']
补:三元组
a=3
b=2
print a if a>b else b