Python 简明教程 --- 11,Python 元组
微信公众号:码农充电站pro
个人主页:https://codeshellme.github.io
软件工程的目标是控制复杂度,而不是增加复杂性。
—— Dr. Pamela Zave
目录

我们在上一节介绍了Python 列表list 数据结构,本节来介绍一下元组tuple。
1,Python 元组
元组与列表有些相似,它们之间最显著的不同是,元组一旦定义了以后,就不能再修改(增加/删除其中的元素),而列表可以被任意的改。
Python 元组有如下特点:
- 元组中的元素可以是任意类型的数据
- 可使用下标和切片访问元组内容
- 元组一点定义,不能再被修改
2,定义元组
我们已经知道了定义列表使用中括号[],而定义元组使用小括号() 表示:
>>> t = () # 一个空的元组
>>> t
()
>>> t = ('a', 1, 3.5, True) # 元组中可以存放任意类型
>>> t
('a', 1, 3.5, True)
只有一个元素的元组
当定义的元组中只有一个元素时,需要在元素后边加个逗号:
>>> t = (1,)
>>> t
(1,)
如果没带逗号,则这个小括号()将不会被认为是元组符号:
>>> t = (1) # 相当于没有带小括号
>>> t
1
>>> t = ('abc')
>>> t
'abc'
3,元组的大小
可以使用len() 来查看一个元组的大小:
>>> t = ('a', 'b', 'c')
>>> len(t) # 长度为 3
3
>>> t = (1, 3)
>>> len(t) # 长度为 2
2
4,访问元组
可以像访问列表一样,使用下标,切片,和 for 循环来访问元组。
使用下标访问元组
>>> t = ('a', 'b', 'c')
>>> t[0] # 访问第一个元素
'a'
>>> t[3] # 下标越界
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> t[-1] # 访问倒数第一个元素
'c'
>>> t[-3] # 访问倒数第三个元素
'a'
>>> t[-4] # 下标越界
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
使用切片访问元组
>>> t = ('a', 'b', 'c')
>>> t[1:3]
('b', 'c')
>>> t[2:]
('c',)
>>> t[:3]
('a', 'b', 'c')
>>> t[:]
('a', 'b', 'c')
遍历元组
>>> t = ('a', 'b', 'c')
>>> for i in t:
... print(i)
...
a
b
c
5,元组不可修改
元组是不可变类型,不能对一个已定义的元组进行以下操作,否则会抛出异常:
- 添加元素
- 修改元素
- 删除元素
示例:
>>> t = ('a', 'b', 'c')
>>> # 没有对于元组的添加操作,所以也不用演示
>>>
>>> t[0] = 1 # 修改元素,抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
>>> del t[1] # 删除元素,抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
6,元组运算
像列表一样,元组也可以进行加运算,乘运算,in 运算。
>>> ('a', 'b') + (1, 2) # 加运算,得到一个新的元素
('a', 'b', 1, 2)
>>>
>>> ('a', 'b') * 2 # 乘运算,相当于 n 个元素相加
('a', 'b', 'a', 'b')
>>>
>>> ('a', 'b') * -1 # n 小于等于 0 时,得到一个空元组
()
>>> 'a' in ('a', 'b') # in 运算,判断一个元素是否包含在元组中
True
>>> 'a' not in ('a', 'b')
False
7,元组函数
通过dir(tuple) 查看元组支持的方法:
['__add__', '__class__', '__contains__',
'__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__',
'__getnewargs__', '__gt__', '__hash__',
'__init__', '__init_subclass__',
'__iter__', '__le__', '__len__',
'__lt__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__',
'count', 'index']
可以看到处了魔法方法,元组类型仅支持两个方法:
count方法index方法
且没有任意一个方法用于修改元组。
1.count 方法
作用:计算元组
T中值为value的个数
原型:T.count(value) -> integer
参数:要计算的元素的值
返回值:个数
示例:
>>> t = ['a', 'b', 'c', 'a']
>>> t.count('a')
2
>>> t.count('b')
1
>>> t.count('d')
0
2.index 方法
作用:从元组
T[start:stip]中查找第一个值为value的元素
原型:T.index(value, [start, [stop]]) -> integer
参数 value:查找值为value的元素
参数 start:元组T的起始下标
参数 stop:元组T的终止下标
返回值:若能找到,则返回该元素的下标,否则,抛出ValueError异常
>>> t = ['a', 'b', 'c']
>>> t.index('b') # 找到了,返回下标
1
>>> l.index('d') # 没找到,抛出 ValueError 异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'd' is not in list
(完。)
推荐阅读:
Python 简明教程 --- 8,Python 字符串函数
欢迎关注作者公众号,获取更多技术干货。

Python 简明教程 --- 11,Python 元组的更多相关文章
- Python 简明教程 --- 13,Python 集合
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍 ...
- Python 简明教程 --- 14,Python 数据结构进阶
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...
- Python 简明教程 --- 15,Python 函数
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误. -- Edsger Dijkstra 目录 本节我 ...
- Python 简明教程 --- 16,Python 高阶函数
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas ...
- Python 简明教程 --- 12,Python 字典
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢. -- Roy Carlson 目录 Python 字典是另一种非常实用 ...
- Python 简明教程 ---10,Python 列表
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...
- Python 简明教程 --- 26,Python 多进程编程
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 学编程最有效的方法是动手敲代码. 目录 1,什么是多进程 我们所写的Python 代码就是一个程序, ...
- 【笔记】Python简明教程
Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...
- python简明教程
Python简明教程 MachinePlay关注 0.7072018.09.26 01:49:43字数 2,805阅读 9,287 Python一小时快速入门 1.Python简介 pylogo. ...
随机推荐
- 使用turtle库绘制渐变的圆
import turtle as t t.pensize(3) t.pencolor("blue") t.penup() t.fd(-250) t.seth(0) t.pendow ...
- Java实现 蓝桥杯VIP 算法训练 一元三次方程
问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...
- Java实现 LeetCode 29 两数相除
29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商 ...
- java中ThreadLocal类的详细介绍(详解)
ThreadLocal简介 变量值的共享可以使用public static的形式,所有线程都使用同一个变量,如果想实现每一个线程都有自己的共享变量该如何实现呢?JDK中的ThreadLocal类正是为 ...
- Linux 用户管理命令-userdel和su
userdel [选项] 用户名,可以删除用户,常用选项 -r :删除用户的同时删除用户的家目录,一般都要用,例如:userdel -r xbb 新建用户和删除用户的本质也就是修改了 /etc/sha ...
- [leetcode] 股票问题
参考文章: [1] 团灭 LeetCode 股票买卖问题 [2] Most consistent ways of dealing with the series of stock problems 其 ...
- 大型Electron应用本地数据库技术选型
开发一个大型Electron的应用,或许需要在客户端存储大量的数据,比如聊天应用或邮件客户端 可选的客户端数据库方案看似很多,但一一对比下来,最优解只有一个 接下来我们就一起来经历一下这个技术选型的过 ...
- HDU - 2546 饭卡 题解
题目大意 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够) ...
- MySQL数据库离线包安装与注册
本文主要介绍了MySQL数据库的离线安装和将MySQL服务注册为Windows应用服务的主要步骤. 1.下在安装程序包 MySQL Community Server 5.6.15 官方下载地址http ...
- 若linux 的分区硬盘满,如何处理?
一.确定是不是真的是磁盘空间不足 输入命令:df –lh 查看磁盘信息 二.如何定位最大文件目录 输入命令:cd / 进入根目录. 输入命令:du -h max-depth=1 寻找当前目录,哪个文件 ...