列表生成式和字典生成式

列表生成式

单参数

生成一个列表,元素为1,4,9,16,……,100。

lists = [n*n for n in range(1, 11)]
print(lists)

多参数

生成一个列表,元素为1*2,2*3,3*4,4*5,……。

lists = [x*y for x,y in zip(range(1,11), range(2, 12))]
print(lists)

这里用到了zip函数,函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

多重循环

写多个for循环,其中循环之间是嵌套的关系。如下代码,是生成0至99的字符串的列表。当然嵌套层数可以不止两层。

lists = [str(x)+str(y) for x in range(10) for y in range(10)]
print(lists)

带if判断

生成0至99的字符串的列表,其中十位数和个位数不相同。增加if语法,列表中只会保留下满足条件的元素,类似于filter函数。

lists = [str(x)+str(y) for x in range(10) for y in range(10) if x != y]
print(lists)

字典生成式

前面说完了列表生成式的一些样例,其实字典也可以推导,不过由于字典还有key和value,所以形式了列表有一点不同。

简单形式

#定义两个列表
ls1 = ["a", "b", "c", "d"]
ls2 = [1, 2, 3, 4]
#生成第三个字典
new_map = {x:y for x,y in zip(ls1, ls2)}
print(new_map)
#输出为{'a': 1, 'b': 2, 'c': 3, 'd': 4}

在字典生成式中循环嵌套应该是没有什么意义的,因为字典要求key唯一。

带if判断

#定义两个列表
ls1 = ["a", "b"]
ls2 = [1, 2]
#生成第三个字典
new_map = {x:y for x,y in zip(ls1, ls2) if x > 1}
print(new_map)
#输出为{'b': 2}
#定义两个列表
ls1 = ["a", "b", "c"]
ls2 = [70, 80, 40]
#生成第三个字典
new_map = {x: score if score > 60 else 61 for x, score in zip(ls1, ls2)}
print(new_map)
#输出为{'a': 70, 'b': 80, 'c': 61}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值