列表推导式及拓展

声明:以下内容为本人对该视频的总结,感谢原创主!

What:一种创建列表的简洁方法
Why:代码简洁、易读
PS:如果使用列表推导式后写出来的代码变复杂了,则不要使用

How
如果不使用列表推导式,编写一段代码

even = []
for i in range(1,10):
	if i%2==0:
		even.append(i)

如果使用列表推导式

even = [i for i in range(1,10) if i%2 == 0]
#[2, 4, 6, 8]

基本格式:Output + for循环 + if条件

形式拓展:
①可以有两个for循环遍历两个遍历

list = [(x,y) for x in[1,2,3] for y in [1,2,3] if x!=y]
#[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)],
#返回含有多个元组的列表

②Output结果可以使用各种函数进行加工

list = [(str(x),y**2) for x in[1,2,3] for y in [1,2,3] if x!=y]
#[('1', 4), ('1', 9), ('2', 1), ('2', 9), ('3', 1), ('3', 4)],
#返回含有多个元组的、按我们加工形式产生的列表

③可以嵌套遍历两层结构

vec = [[1,2,3],[4,5,6],[7,8,9],[10,11]]
list = [y  for x in vec for y in x if len(x)==3]
#x是指vec中的每一个list,而y是指每一个list中的元素
#相当于获取了符合条件的x中的每一个元素

拓展:
①集合set推导式
语法结构同列表推导式,区别是将**[]替换成{}**

#由于集合不包括重复元素,返回的结果已去重
set = {x for x in 'ab_and on' if x!='_' and x!=' '}
#{'n', 'b', 'd', 'o', 'a'}

字典dict推导式
集合set推导式:语法结构同列表推导式,区别是将**[]替换成{},Output为Key:Value**的形式。

dict = {str(x):x**2 for x in range(1,10) if x%2 == 0 } 
#{'2': 4, '4': 16, '6': 36, '8': 64}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值