python学习之列表生成式

本文介绍了Python列表生成式的使用方法及其优势,并通过实例对比了传统for循环与列表生成式的效率差异。此外还展示了如何在列表生成式中加入条件判断以及处理字典等复合数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表生成式,主要是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值