[Python3] 012 元组:list,我们不一样!
0. 元组的独白
- 英文名:tuple
- 可以把我看成是一个不可更改的 list
- 有人说我是带上枷锁的 list,其实我是褪去稚气的 list,因为我懂得”守护“:在我元组里的元素,我一定护他周全!即人们所说的”不可修改“。
1. 元组的创建
# 例1.1
t1_1 = ()
t1_2 = (1,)
t1_3 = 1,
t1_4 = (1)
print(type(t1_1))
print(type(t1_2))
print(type(t1_3))
print(type(t1_4))
- 运行结果
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'int'>
# 例1.2
t1_5 = (1, 2, 3, 4, 5)
t1_6 = ([1, 2, 3, 4, 5])
t1_7 = tuple([1, 2, 3, 4, 5])
print(type(t1_5))
print(type(t1_6))
print(type(t1_7))
- 运行结果
<class 'tuple'>
<class 'list'>
<class 'tuple'>
t1_7 说明 tuple() 可以将列表转换为元组;其实 list() 也能将元组转换为列表。
# 例1.3
t1_8 = tuple(1)
- 运行结果
TypeError……'int' object is not iterable
逗号比括号要关键。
2. 元组的特性
(1) 概述
- 元组是序列表,有序
- 元组数据值相当于“只读”模式,即可以访问,不能修改
- 元组数据值可以是任意类型
- 与 list 仅一个区别:不可修改
- 可以索引、分片、序列间计算、成员资格操作等
(2) 少废话,上例子
1) 索引
# 例2.1
t2 = (1, 2, 3, 4, 5)
print(t2[4])
- 运行结果
5
# 例2.2 接着例2.1
print(t2[10])
- 运行结果
IndexError……tuple index out of range
索引值超标,报错。
2) 分片
# 例3.1
t3_1 = (0, 1, 2, 3, 4, 5)
t3_2 = t3_1[1::2] # 从下标为 1 开始,索引至结尾;间隔为 1
print(id(t3_1)) # 习惯性看看 id
print(id(t3_2))
print(t3_2)
- 运行结果
1988512479944
1988536808648
(1, 3, 5)
分片是新开辟一片存储空间,存放数值。
# 例3.2 接着例3.1
t3_3 = t3_1[2:100]
print(t3_3)
- 运行结果
(2, 3, 4, 5)
切片值右端可以超标。
3) 序列运算
# 例4.1 相加
t4_1 = (1, 2, 3)
t4_2 = (4, 5, 6)
print(t4_1)
print(id(t4_1))
t4_1 = t4_1 + t4_2
print(t4_1)
print(id(t4_1))
- 运行结果
(1, 2, 3)
1988536694824
(1, 2, 3, 4, 5, 6)
1988536598056
此相加并不是对应下标的值进行数学上的加法,而是像“贪吃蛇”一样让一个元组的元素跟在另一个元组后面。
元组的“不可修改”,是对已有内容说的,其实元组可以“拉长”。
与其说是“相加”,不如说是“合并”。
# 例4.2 接着例4.1
t4_1[1] = 100
- 运行结果
TypeError……'tuple' object does not support item assignment
修改元组原有内容会报错。
# 例5 相乘
t5 = (1, 2, 3)
t5 = t5 * 3
print(t5)
- 运行结果
(1, 2, 3, 1, 2, 3, 1, 2, 3)
4) 成员检测
# 例6
t6 = (1, 2, 3)
if 2 in t6:
print("YES")
else:
print("NO")
if 6 in t6:
print("YES")
else:
print("NO")
- 运行结果
YES
NO
3. 元组的遍历
(1) 简单总结
- 一般用 for
- 会有嵌套
(2) 少废话,上例子
# 例7 单层元组遍历
t7 = (1, 2, 3, "I", "am", "YorkFish")
for i in t7:
print(i, end=' ')
- 运行结果
1 2 3 I am YorkFish
# 例8.1 双层元组遍历
t8 = ((1,2,3), (4,5,6), ("I","am","YorkFish"))
for i in t8:
print(i)
- 运行结果
(1, 2, 3)
(4, 5, 6)
('I', 'am', 'YorkFish')
有个小细节,t8 中的 (1,2,3) 等没空格,输出却有。
# 例8.2 接着例8.1
for k,m,n in t8:
print(k,'--',m,'--',n)
- 运行结果
1 -- 2 -- 3
4 -- 5 -- 6
I -- am -- YorkFish
4. 元组的内置方法
(1) 如何查看
- help(tuple) / help(tuple())
- help(tuple.index)
- dir(tuple) / dir(tuple())
(2) 少废话,上例子
1) 计数君 count()
- 与之前在字符串、列表中的用法类似
- 计算指定数据在元组中出现的次数
# 例9
t9 = (0, 1, 2, 3, 6, 6, 6, 9, 4)
print(t9.count(6))
- 运行结果
3
2) 索引君 index()
- 与之前在字符串、列表中的用法类似
- 索引指定元素在元组中的位置
# 例10.1
t10 = (0, 1, 2, 3, 6, 6, 6, 9, 4)
print(t10.index(3))
print(t10.index(6))
- 运行结果
3
4
若索引值在元组中有多个,则返回下标值最小的。
# 例10.2
print(t10.index(20))
- 运行结果
ValueError……tuple.index(x): x not in tuple
若索引值不存在于该元组,会报错。
5. 可供元组使用的别的方法
- 有人说“函数”,有人说“方法”
(1) 测量君
# 例11 len()
t11 = (1, 2, 3, 4, 5)
print(len(t11)) # 测得元组的长度
- 运行结果
5
(2) 最值双子
# 例12.1 max() 与 min()
t12 = (2, 6, 4, 8 ,12, 6, 78, 6)
print(max(t12))
print(min(t12))
- 运行结果
78
2
- 挖坑,编号 Py012-1
- 若元组中有多个最值,则实际打印出哪个?如何得知?
(3) 清除大师
# 例13 del()
t13 = (1, 2, 3, 4, 5)
print(t13)
del(t13)
print(t13)
- 运行结果
(1, 2, 3, 4, 5)
NameError……name 't13' is not defined
报错说 t13 没有被定义,也就是说 t13 被删除了。
6. 非要改元组中的值怎么办?(翻车现场)
- 可利用列表,其实是改了“第二层的内容”
# 例14
t14 = (1, [2,3,4], 5)
t14[1][2] = 10 # 修改
t14[1].append(20) # 追加
print(t14)
- 运行结果
(1, [2, 3, 10, 20], 5)
# 例15 伪插入
t15 = ("YorkFish", "Green Arrow", "Canary")
t15 = t15[:2] + ("Supergirl",) + t15[2:] # t15 有种推翻重来的感觉
print(t15)
- 运行结果
('YorkFish', 'Green Arrow', 'Supergirl', 'Canary')
不要把 t15[2:] 偷懒成 t15[-1],会报错,因为 t15[-1] 是字符串而不是元组。
# 例16 伪删除
t16 = ('YorkFish', 'Green Arrow', 'Supergirl', 'Canary')
t16 = t16[:1] + t16[2:]
print(t16)
- 运行结果
('YorkFish', 'Supergirl', 'Canary')
[Python3] 012 元组:list,我们不一样!的更多相关文章
- python3.x元组打印错误 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
原创by南山南北秋悲 欢迎引用!请注明原地址:http://www.cnblogs.com/hwd9654/p/5676746.html 谢谢! TypeError: unsupported ope ...
- Python3 数据类型-元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 实例1(Python3.0+): tu ...
- python3:tuple元组
https://www.runoob.com/python3/python3-tuple.html 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. Py ...
- 一起入门python3之元组和数列
这一节我们来说一下,元组(tupe)&数列(list).每天苦逼的工作不易啊,哎.不过呢一腔热血学习.哈哈哈哈 #井号代表注释哈. 0x01 数列-list 数列可以说是一种集合 ...
- Python3 的元组
元组(tuple):戴上了枷锁的列表 元组与列表非常相似但是元组内元素的类型相同,且元组内的元素不能修改 1.创建元组的方法 与列表不同创建元组大部分情况下是用小括号,例如 tuple1=(1,2,3 ...
- python3.5 元组
1.创建元祖 tup1 = ('jenkins','mysql') print(tup1) ssh://root@192.168.0.204:22/usr/bin/python -u /home/pr ...
- (03)-Python3之--元组(tuple)操作
1.定义 元组的关键字:tuple 元组以()括起来,数据之间用 , 隔开.元组当中的数据,可以是任意类型.数值是可以重复的. 元组元素是 不可变的,顺序是 有序的. 例如: b = ("萝 ...
- Python - 元组(tuple) 详解 及 代码
元组(tuple) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17290967 元组是存放任意元素集合,不能修 ...
- 零基础入门学习Python(13)--元组:戴上了枷锁的列表
前言 这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表 我们都知道早在300多年前,孟德斯鸠在变法的时候说过,一切拥有权力的人都容易被滥用权力,这是万古不变的一条经验.但是呢,凡是拥有大权利的 ...
随机推荐
- Manacher || Luogu P3805【模板】manacher算法
题面:[模板]manacher算法 代码: #include<cstdio> #include<cstring> #include<iostream> #defin ...
- Ubuntu 下串口调试工具
1. cutecom 安装:sudo apt-get install cutecom 打开方式: 在终端输入:cutecom,即可打开串口工具 或者在应用中,点击 cutecom 图标打开 打开后的界 ...
- Eclipse开发工具的编码问题
乱码:文件有一个编码,打开文件的工具(Eclipse或者浏览器)有一个编码,当两个编码不同就会出现编码异常或乱码. 参考: Eclipse修改编码格式 背景:在Eclipse的开发使用中,我们经常使用 ...
- Centos7没有Ifconfig命令该怎么办?
centos7没有ifconfig命令该怎么办? linux系统查看ip地址常用命令是[ifconfig],CentOS 7.0最小安装是没有ifconfig命令怎么办?当然可用[ip addr]查看 ...
- 2018微信小程序开发遇到的坑
第一个坑:wx.showModal(OBJECT) wx.showModal在安卓手机里,如果点击遮罩的话会关闭弹窗,不会有任何回调.而苹果的情况下则是点击遮罩不会有任何反应. 这样会有什么问题呢? ...
- java 生成透明背景图片
//开始绘图 graphics2d.setBackground(Color.WHITE); graphics2d.clearRect(0, 0, width, height); graphics2d. ...
- linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署
一.部署docker registry 生产环境中我们一般通过搭建本地的私有镜像仓库(docker registry)来拉取镜像. 1.拉取registry镜像 [root@k8 ...
- bullet学习日记
最近需要bullet用物理引擎做一个测量类的项目,因为半途接手,物理部分其实已经实现,但犹于对bullet基本不了解,导致相关部分完全改不动,这两天静下心来把物理引擎用法了解了一翻,顺便做点笔记,以便 ...
- 交互输入与for语句
交互输入与for语句 1. 交互输入 read命令可以同时定义多个变量值:输入的内容默认以空格为分隔符,将值输入到对应的变量中:read尽量避免交互 如果默认值过多,最后所有的值会被赋予给最有一个 ...
- javascript之大文件分段上传、断点续传(一)
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...