4.3 Python 元组类型常用操作及内置方法

文章目录

      • 1. Tuple元组
        • 1.1 元组
        • 1.2 获取元素
        • 1.3 修改元素
      • 2. 类型转换
      • 3. 索引取值与切片
      • 4. 遍历元组
      • 5. 获取长度
      • 6. 拼接与复制
        • 6.1 元组的拼接
        • 6.2 元组元素复制
      • 7. 成员运算
      • 8. 统计元素
      • 9. 获取索引
      • 10. 练习

2022-11-13_01497

1. Tuple元组

1.1 元组
特征: 使用小括号括起来, 内部可以存放多个数据, 元素与元素之间用逗号隔开, 元素可以是任意数据类型.
元组与列表类似, 不同之处在于元组的元素不能修改, 元素内部的元素类型是可变类型的话支持修改.
多维元组: 当元组的元素是一个容器类型时, 那么这个元组被称为多维元组, 嵌套几层就是几维元组.
* 元组只有一个元素的时候元素后面加上一个逗号, 否则就不是元组, 而是整型.
* 推荐所有容器类型, 无论内部有几个元素, 末尾要加上逗号, 尤其是只有一个值得时候.变量名 = (元素1,)
变量名 = (元素1, 元素2, ···)
省略括号写法:
变量名 = 元素1,  
变量名 = 元素1, 元素2, ···
# 空元组
t1 = ()
print(t1, type(t1))  # () <class 'tuple'># 元组只有一个值得时候在值得后面加上逗号,
t2 = (1,)
print(t2, type(t2))  # (1,) <class 'tuple'># 一个int的数据类型, 加上括号, 括号被省略, 那还是整型.
t3 = (1)
print(t3, type(t3))  # 1 <class 'int'># 省略写法
t4 = 1,
print(t4, type(t4))  # (1,) <class 'tuple'>
t5 = 1, 2, 3
print(t5, type(t5))  # (1, 2, 3) <class 'tuple'>

2022-11-11_01405

(1) 是一个整型, 整型加厉害就多余了, 所以提示: 移除冗余的圆括号.
1.2 获取元素
元组和元组一样可以按索引取值.
取值格式:变量[索引]
多维元组取值: 变量[索引][索引]···
t1 = (1, ['a', 'b'])
print(t1[0])  # 1
print(t1[1][0])  # a
1.3 修改元素
t1 = (5,)
# 元组修改值
t1[0] = 1
运行工具窗口显示:
Traceback (most recent call last):File "C:\Users\13600\PycharmProjects\test\test.py", line 3, in <module>t1[0] = 1
# 类型错误:“tuple”对象不支持项分配
TypeError: 'tuple' object does not support item assignment

2022-11-11_01407

* 元组不支持修改元素是因为Tuple的类中没有设置__setitem__属性.

2022-11-11_01406

* 元组不可变是指当前变量存放的元素不可变, 如果定义的元组最外层变量包含可变类型元素,那么这个元组是可变的。
t1 = (1, [1, 2])
print(t1)  # (1, [1, 2])# 元素内部的元素类型是可变类型的话支持修改.
t1[1][0] = 0
t1[1][1] = 'a'
print(t1)  # (1, [0, 'a'])

2022-11-11_01408

意外类型:(int, int)可能的类型:(SupportsIndex, list[int])(slice, Iterable[list[int]])
列表在作为一个容器类型的元素时, 列表自身的元素是同一个类型的话, Pycharm 会认为列表该该类型列表,
对列队元素修改是, 期待该元素的新值也是该类型, 否则会提示警告. 这个警告可以忽略.
元素的类型不都是一样的话就不会出现提示.

2. 类型转换

能被for循环遍历的都可以转换为元组类型.
str1 = tuple('hello world!')
list1 = tuple(['a', 'b', 'c'])
dic1 = tuple({'k1': 'v1', 'k2': 'v2'})
set1 = tuple((1, 2, 3))print(tuple(str1), type(str1))
print(tuple(list1), type(str1))
print(tuple(dic1), type(dic1))
print(tuple(set1), type(set1))
运行工具窗口显示:
('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!') <class 'tuple'>
('a', 'b', 'c') <class 'tuple'>
('k1', 'k2') <class 'tuple'>
(1, 2, 3) <class 'tuple'>

3. 索引取值与切片

索引取值: 取一个元素.
列表中每个元素占一个索引, 索引从0开始.切片取值: 取多个元素.
取值格式: 字符串[start: stop: step]
start 起始值参数: 起始位置, 从第几位开始取值.
stop  上限值参数: 上限的位置, 只能获取到它的前一索引的值, 不包含它本身.
step  步长参数:   从左往右正向取值, 步长是负数从右往左反向取值(start  stop 参数对换).省略索引:
省略第一个参数: 默认参数为0, 从索引0开始截取.
省略第二个参数: 默认惨为列表的长度, 意味着切片直至列表的末尾.
省略第三个参数: 默认为1, 从左往右正向取值. 
tuple1 = (1, 2, 3, 4, [1, 2])# 取第一个值
print(tuple1[0])  # 1
# 取第一个个第二个值
print(tuple1[0:2])  # (1, 2)
# 取最后一个值
print(tuple1[-1])  # [1, 2]
# 全取
print(tuple1[:])  # (1, 2, 3, 4, [1, 2])
# 倒退 全取
print(tuple1[::-1])  # ([1, 2], 4, 3, 2, 1)
# 嵌套取值
print(tuple1[4][1])  # 2

4. 遍历元组

for循环语句可以依次获取元组的元素.
t1 = (1, 2, 3, 4, [1, 2])
for i in t1:print(i)  
运行工具窗口显示:
1
2
3
4
[1, 2]

5. 获取长度

len()函数: 可以获取元组的元素个数.
tuple1 = (1, 2, 3, 4, [1, 2])
print(len(tuple1))  # 5

6. 拼接与复制

符号作用示例
+ 加号拼接元组.(1, ) + (2, ) = (1, 2)
* 乘号复制元组元素.(1, ) * 2 = (1, 1)
Python属于强类型语言, 不能类型的数据是无法互相操作的.
Python中为了方便程序员的使用:
使用+, 让元组与元组将加时, 表示拼接元组(末尾添加).
使用*, 让元组与整型将乘时, 使其不再表示乘法, 而是复制n次元素.
6.1 元组的拼接
t1 = (1, )
print(t1 + (2, ))  # (1, 2)t1 += (2, )
print(t1)  # (1, 2)
6.2 元组元素复制
t1 = (1, )
print(t1 * 2)  # (1, 1)t1 *= 2
print(t1)  # (1, 1)

7. 成员运算

in      判断某个个体是否在某个群体当中, 返回布尔值.
not in  判断某个个体是否不在某个群体当中, 返回布尔值.
t1 = (1, 2)print(1 in t1)  # Trueprint(2 not in t1)  # False

8. 统计元素

.count()方法: 统计指定元素的个数.
tuple1 = (1, 1, 1, 4, [5, 6])
print(tuple1.count(1))  # 3

9. 获取索引

.index()方法: 从左往右查找指定元素,查到就立刻返回索引,元素不存在则报错.
报错信息:ValueError: tuple.index(x): x not in tuple
tuple1 = (1, 2, 3, 4, [5, 6])
print(tuple1.index(1))  # 0

10. 练习

1. 什么是元组?它用在何处?
2. 元组不可变指的是元组内的什么不可改变?
3. t = (1,2,['AA']) ,针对改元组能够把'aa'改成'AA',这与元组不可变是否冲突?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/348593.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++进阶】RBTree封装map与set

1.红黑树的迭代器 1.1 begin() begin()就是红黑树的开头&#xff0c;那么对于红黑树来说按照中序序列是该树的最左节点。 Iterator Begin(){Node* leftMin _root;while (leftMin->_left){leftMin leftMin->_left;}return Iterator(leftMin);} 1.2 end() begin()就是…

【启明智显分享】个位数价格工业HMI芯片:720P@60fps,配备2D加速

我们生活在一个“屏”的时代&#xff0c;工业自动化、智能生活的实现都离不开屏幕的帮助&#xff0c;而对于消费者而言&#xff0c;最大的痛点就是显示屏的画质&#xff0c;一个优质的人机交互界面影响着用户体验&#xff0c;流畅清晰的图像呈现与屏幕的分辨率、刷新率都息息相…

VScode ssh远程连接代码开发XHR failed

一、问题描述 在vscode下载插件Remote-SSH远程连接进行代码开发时&#xff0c;提示 XHR failed 无法建立连接。 二、解决方案 1. 离线下载vscode-server 第一步&#xff1a;vscode菜单栏----帮助----关于----提交后面的一串数字字母即为vscode的 commit_id 第二步&#xff…

uniapp地图导航

我们只需要给图标加一个点击事件 我这里的数据都是动态的&#xff0c;想测试的朋友可以写固定值 然后跳转之后首先会调到选择软件导航 点击导航之后会显示使用哪个app 最后我们选择之后将会直接跳转到app进行导航

Git基础指令(图文详解)

目录 Git概述Git基础指令Linux系统操作指令 Git软件指令1.配置信息2.名称和邮箱3.初始化版本库4.向版本库中添加文件5.修改版本库文件6. 查看版本库文件历史 7.删除文件8.恢复历史文件 Git概述 Git基础指令 Linux系统操作指令 Git是一款免费、开源的分布式版本控制系统&…

028、工具_Pipeline

Redis客户端执行一条命令分为如下四个过程: 1)发送命令 2)命令排队 3)命令执行 4)返回结果 其中1)+4)称为Round Trip Time(RTT,往返时间)。 Pipeline(它能将一组Redis命令进 行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端,图3-…

早知 121私人导航升级新版本, 第一次使用原生dialog标签。

早知121项目介绍说明 早知121 - 一个快速创建私人导航网站。 用途&#xff1a; 创建个人的工作导航&#xff0c;收集常用网址&#xff0c;可贡献给同事。创建个人垂直领域导航 优点&#xff1a; - 不需懂技术&#xff0c;不用维护服务器&#xff0c;维护私人导航收藏站。 网…

express入门03增删改查

目录 1 搭建服务器2 静态文件托管3 引入bootstrap4 引入jquery5 编写后端接口5.1 添加列表查询方法5.2 添加路由5.3 添加数据表格 总结 我们前两篇介绍了如何利用express搭建服务器&#xff0c;如何实现静态资源托管。那利用这两篇的知识点&#xff0c;我们就可以实现一个小功能…

公司面试题总结(五)

25.谈一谈箭头函数与普通函数的区别&#xff0c;箭头函数主要解决什么问题&#xff1f; 箭头函数与普通函数的区别&#xff1a; ⚫ 语法简洁性&#xff1a; ◼ 箭头函数使用>符号定义&#xff0c;省略了 function 关键字&#xff0c;使得语法更为紧凑。 ◼ 对于单行函…

事件、方法实现 on_radioGreen_clicked ,on_chkBoxUnder_clicked,Qfont,QPalette

Vertical Layout 、Horizontal Layout 实验窗体自适应布局 接上篇界面布局&#xff0c; 实验checkBox、radioBox 的事件槽&#xff0c; 使用Qfont组件变更纯文本框QPlainTextEdit中字体的下划线、加粗、斜体效果 使用调色板组QPalette变更纯文本框QPlainTextEdit中文本颜色 UI…

三、网络服务协议

目录 一、FTP&#xff1a;文件传输协议 二、Telnet&#xff1a;远程登录协议 三、AAA认证 四、DHCP 五、DNS 六、PPP协议 七、ISIS协议 一、FTP&#xff1a;文件传输协议 C/S架构&#xff0c;现多用于企业内部的资料共享和网络设备的文件传输&#xff0c;企业内部搭建一…

element table 点击某一行中按钮加载

在Element UI中&#xff0c;实现表格&#xff08;element-table&#xff09;中的这种功能通常涉及到数据处理和状态管理。当你点击某一行的按钮时&#xff0c;其他行的按钮需要动态地切换为加载状态&#xff0c;这可以通过以下步骤实现&#xff1a; 1.表格组件&#xff1a;使用…

手机流畅运行470亿参数大模型,上交大发布PowerInfer-2推理框架,性能提升29倍

苹果一出手&#xff0c;在手机等移动设备上部署大模型迅速成为行业焦点。 目前&#xff0c;移动设备上运行的模型相对较小&#xff08;苹果的是3B&#xff0c;谷歌的是2B&#xff09;&#xff0c;并且消耗大量内存&#xff0c;这在很大程度上限制了其应用场景。 即使是苹果&…

【西瓜书】9.聚类

聚类任务是无监督学习的一种用于分类等其他任务的前驱过程&#xff0c;作为数据清洗&#xff0c;基于聚类结果训练分类模型 1.聚类性能度量&#xff08;有效性指标&#xff09; 分类任务的性能度量有错误率、精度、准确率P、召回率R、F1度量(P-R的调和平均)、TPR、FPR、AUC回归…

20240613解决飞凌的OK3588-C的核心板的USB3.0接口不读U盘的问题

20240613解决飞凌的OK3588-C的核心板的USB3.0接口不读U盘的问题 2024/6/13 15:21 缘起&#xff0c;由于USB3.0的CC芯片在飞凌的OK3588-C的开发板的底板上&#xff0c;一切正常。 如果你单独使用核心板&#xff0c;很容易出现这个问题【省成本没有使用CC芯片】&#xff1a;不读U…

LabVIEW开发CAN通讯协议

在LabVIEW中开发CAN&#xff08;Controller Area Network&#xff09;通讯协议时&#xff0c;需要全面考虑硬件选择、驱动安装、通信配置、错误处理、数据解析和实时性等多个方面。本文详细介绍了在LabVIEW中实现CAN通讯时的关键点和最佳实践&#xff0c;确保系统的稳定性、可靠…

JFrame.setDefaultLookAndFeelDecorated

在java Swing编程中,作为窗体,我们经常编写类继承JFrame,在main方法中进行加载,如下 有一种方法,不用继承JFrame也可以弹窗,代码如下 但是这个跟我们今天的setDefaultLookAndFeelDecorated有什么关系呢,这个设置,必须在new 对象前进行调用,才有装饰效果,如下 说白了…

Java中Transactional在不同方法间的穿透性,rollbackFor参数含义

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在Java开发中&#xff0c;经常会遇到需要在一个事务中执行多个操作的场景。为了确保这些操作的原子性&#xff0c;可以使用Spring框架提供的Transactional注解来实现事务管理。然而&#xff0c;在实际开发过程中&…

【Intel CVPR 2024】通过图像扩散模型生成高质量360度场景,只需要一个语言模型

在当前人工智能取得突破性进展的时代&#xff0c;从单一输入图像生成全景场景仍是一项关键挑战。大多数现有方法都使用基于扩散的迭代或同步多视角内绘。然而&#xff0c;由于缺乏全局场景布局先验&#xff0c;导致输出结果存在重复对象&#xff08;如卧室中的多张床&#xff0…

JVM性能优化案例:减少对象频繁创建

JVM性能优化案例&#xff1a;减少对象频繁创建 案例背景 某金融应用系统在处理大量并发交易时&#xff0c;响应时间过长&#xff0c;并且有时出现内存溢出&#xff08;OutOfMemoryError&#xff09;的问题。经过分析&#xff0c;发现问题主要出在频繁的对象创建和较差的内存管…