python列表/字典推导式

python中有一个语法糖非常实用,经常用来快速生成列表,字典等数据类型,灵活使用可以提高我们的开发效率,它就是列表/字典推导式(也称列表/字典解析式)

一:列表推导式

先简单写个for循环的例子

lists = []
for i in range(10):
	lists.append(i)
print(lists)
#print--[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

在这一段代码里面最终打印出来列表的会存放0-9这十个数,那么同样的数据用列表推导式生成呢

lists = [i for i in range(10)]
print(lists)
#print--[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

可以看出,代码量简洁了很多

那么如果我们想在列表推导式里面加上判断条件呢

1:只有if判断时,在末尾加if

lists = [i for i in range(10) if i!=2]
print(lists)
#print--[0, 1, 3, 4, 5, 6, 7, 8, 9]

从结果看出当if为True时,取这个数据,而False时i,则不取数据,这点和正常写法是一样的

2:if-else判断时,在中间加if-else

lists = [i if i!=2 else i*2 for i in range(10)]
print(lists)
#上面代码意为[表达式1 if i!=2 else 表达式2 for i in range(10)]
#print--[0, 1, 4, 3, 4, 5, 6, 7, 8, 9]

从结果上看,当if为真,执行的是i这个表达式1,当if为假时,则执行i*2这个表达式2

二:字典推导式

先甩一段正常生成字典的代码

dicts = {}
for i in range(10):
    dicts[i] = i+1
print(dicts)
#print--{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}

这里是字典推导式的对比

dicts = {i:i+1 for i in range(10)}
print(dicts)
#print--{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}

这里和列表推导式大体上是一样的,只不过有两点要注意
1、字典推导式用的是{}花括号包起来,而列表推导式用的是[]方括号。
2、因为字典是键值对的形式,所以表达式也要写成键值对的形式(要有个冒号)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值