当前位置: 首页 > news >正文

元组推导式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

使用元组推导式可以快速生成一个元组,它的表现形式和列表推导式类似,只是将列表推导式中的“[]”修改为“()”。例如,我们可以使用下面的代码生成一个包含10个随机数的元组。

import random                                   # 导入random标准库

randomnumber = (random.randint(10,100) for i in range(10))

print("生成的元组为:",randomnumber)

执行结果如下:

生成的元组为: <generator object <genexpr> at 0x0000000003056620>

从上面的执行结果中,可以看出使用元组推导式生成的结果并不是一个元组或者列表,而是一个生成器对象,这一点和列表推导式是不同的。要使用该生成器对象可以将其转换为元组或者列表。其中,转换为元组使用tuple()函数,而转换为列表则使用list()函数。

例如,使用元组推导式生成一个包含10个随机数的生成器对象,然后将其转换为元组并输出,可以使用下面的代码:

import random                                   # 导入random标准库

randomnumber = (random.randint(10,100) for i in range(10))

randomnumber = tuple(randomnumber)                # 转换为元组

print("转换后:",randomnumber)

执行结果如下:

转换后: (76, 54, 74, 63, 61, 71, 53, 75, 61, 55)

要使用通过元组推导器生成的生成器对象,还可以直接通过for循环遍历或者直接使用__next__()方法进行遍历。

说明:在Python 2.x中,__next__()方法对应的方法为next()方法,也是用于遍历生成器对象的。

例如,通过生成器推导式生成一个包含3个元素的生成器对象number,然后调用3次__next__()方法输出每个元素的值,再将生成器对象number转换为元组输出,代码如下:

number = (i for i in range(3))

print(number.__next__())                  # 输出第1个元素

print(number.__next__())                  # 输出第2个元素

print(number.__next__())                   # 输出第3个元素

number = tuple(number)                  # 转换为元组

print("转换后:",number)

上面的代码运行后,将显示以下结果:

0

1

2

转换后: ()

再如,通过生成器推导式生成一个包括4个元素的生成器对象number,然后应用for循环遍历该生成器对象,并输出每一个元素的值,最后再将其转换为元组输出,代码如下:

number = (i for i in range(4))          # 生成生成器对象

for i in number:                          # 遍历生成器对象

    print(i,end=" ")                      # 输出每个元素的值

print(tuple(number))                   # 转换为元组输出

执行结果如下:

0 1 2 3 ()

从上面的两个示例中可以看出,无论通过哪种方法遍历,如果再想使用该生成器对象,都必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Keras深度学习框架第二十九讲:在自定义训练循环中应用KerasTuner超参数优化
  • qt 布局学习笔记
  • 气膜体育馆主要能耗解析—轻空间
  • 2024,java开发,已经炸了吗?
  • Python 开心消消乐
  • C# 实现腾讯云点播之媒体上传常用接口
  • java中的类加载器
  • 精通C++ STL(二):string类的模拟实现
  • AI绘画图生图有什么用?
  • React项目中使用各表单库性能对比调研报告
  • 等保服务是一次性服务吗?为什么?怎么理解?
  • wireshark抓包,丢包分析?
  • Appium系列(2)元素定位工具appium-inspector
  • tcp和tcp6切换
  • 连续数组 ---- 前缀和
  • “大数据应用场景”之隔壁老王(连载四)
  • 「译」Node.js Streams 基础
  • 【Linux系统编程】快速查找errno错误码信息
  • 【译】理解JavaScript:new 关键字
  • Computed property XXX was assigned to but it has no setter
  • CSS实用技巧干货
  • ES6系列(二)变量的解构赋值
  • HTTP那些事
  • JavaScript服务器推送技术之 WebSocket
  • Javascript设计模式学习之Observer(观察者)模式
  • Java多态
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • LeetCode29.两数相除 JavaScript
  • nginx 配置多 域名 + 多 https
  • PAT A1092
  • react 代码优化(一) ——事件处理
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Vue2 SSR 的优化之旅
  • webpack+react项目初体验——记录我的webpack环境配置
  • 程序员最讨厌的9句话,你可有补充?
  • 复习Javascript专题(四):js中的深浅拷贝
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 记一次删除Git记录中的大文件的过程
  • 开源SQL-on-Hadoop系统一览
  • 力扣(LeetCode)56
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 删除表内多余的重复数据
  • postgresql行列转换函数
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (12)目标检测_SSD基于pytorch搭建代码
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (七)Flink Watermark
  • (三)mysql_MYSQL(三)
  • (十五)使用Nexus创建Maven私服
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库