python元祖生成式_python生成式

生成式(comprehensions), 也称推导式,是python中的一种高级玩法,编码风格更加简洁优美。

它可以使用简单的一行代码实现列表、字典等数据类型的创建或数据类型的转换等任务。

列表生成式

列表生成式,列表推导式(list comprehensions)

# 列表生成式即生成列表的生成式,写法简单而优雅,可以将多行代码用一行代码实现,且效率较高。

# 一般用于创建简单的新列表或对过滤出新列表。另外,还可以做数据类型间的转换。

# 用 [] 构造列表生成式

# 功能1

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

nums2 = [i for i in nums if i >5]# num2= [6, 8]

# 功能2

nums = list(i for i in range(1, 5))# nums = [1, 2, 3, 4]

# 数据类型转换

a = {"name":"jack", "age": 18}

a2 = [key for key in a]# a2 = ['name', 'age']

字典生成式

# 字典生成式即生成字典的生成式。特殊场合下,可以写出很优美的代码。

# 也分为两种生成方式,一种默认的使用{},括号体内使用循环生成。另外配合内置方法的使用,效果很优美。

# 用 {} 构造字典生成式

# 方式1

{k:v for k,v in enumerate(range(1,5))}# {0: 1, 1: 2, 2: 3, 3: 4}

# 方式2

li = [[1,2], (3,4)]

dict(x for x in li)# {1: 2, 3: 4}

集合生成式

# 用{}构造集合生成式

# 方式1

b = {i for i in range(1,5)}# {1,2,3,4}

# 方式2

a = set(i for i in range(1,5))# {1,2,3,4}

元组生成式

# 元组生成式即生成元组的生成式,按理说应该使用()定义,括号内循环的方式生成元组生成式,

# 但是()被python中的生成器占用,就只剩下一种方式生成元组生成式。

# 方式1

tuple(x for x in range(1,5))# (1, 2, 3, 4)

# 数据类型转换

nums = [3,4,5,6]

tuple(x for x in nums)# (3, 4, 5, 6)

生成器生成式

使用()内循环的方式可以生成最简单的生成器,生成器替代列表的使用可以减小内存的消耗。生成器可以通过next输出数据,但最后一个后会报错;一般使用for循环的方式使用生成器。其实,range(10)本质上就是一个最简单的生成器。

a = (i for i in range(1,5))# at 0x0000027B1B5994C8>

print(next(a))# 1

print(next(a))# 2

print(next(a))# 3

print(next(a))# 4

print(next(a))# 抛出异常StopIteration

# 可以使for循环的方式避免异常

print([i for i in a])# [1,2,3,4]

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值