微信公众号:码农充电站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 简明教程 --- 6,Python 控制流

Python 简明教程 --- 7,Python 字符串

Python 简明教程 --- 8,Python 字符串函数

Python 简明教程 --- 9,Python 编码

Python 简明教程 --- 10,Python 列表


欢迎关注作者公众号,获取更多技术干货。

Python 简明教程 --- 11,Python 元组的更多相关文章

  1. Python 简明教程 --- 13,Python 集合

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍 ...

  2. Python 简明教程 --- 14,Python 数据结构进阶

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...

  3. Python 简明教程 --- 15,Python 函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误. -- Edsger Dijkstra 目录 本节我 ...

  4. Python 简明教程 --- 16,Python 高阶函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas ...

  5. Python 简明教程 --- 12,Python 字典

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢. -- Roy Carlson 目录 Python 字典是另一种非常实用 ...

  6. Python 简明教程 ---10,Python 列表

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...

  7. Python 简明教程 --- 26,Python 多进程编程

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 学编程最有效的方法是动手敲代码. 目录 1,什么是多进程 我们所写的Python 代码就是一个程序, ...

  8. 【笔记】Python简明教程

    Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...

  9. python简明教程

    Python简明教程 MachinePlay关注 0.7072018.09.26 01:49:43字数 2,805阅读 9,287 Python一小时快速入门 1.Python简介   pylogo. ...

随机推荐

  1. Parrot os配置源更新

    每次都是忘了怎么配置,去官网查文档,这记一下 一.源文件配置注意 首先要注意Parrot官方软件库的默认更新源文件不在 /etc/apt/sources.list 而是 /etc/apt/source ...

  2. 【已解决】Ubuntu U盘启动出现“Failed to load ldlinux.c32”问题

    利用UltraISO制作了Ubuntu的U盘启动,在USB启动时出现了 Failed to load ldlinux.c32 Boot failed: please change disks and ...

  3. IC-二进制, 自然数, 有符号数

    https://mp.weixin.qq.com/s/9rGs9yN-OvLvEclnDZr87Q   零. 概念和结论 1. 数:概念名,指代物体的多少,即物体的量的概念: 2. 值:概念属性,数的 ...

  4. Java实现 LeetCode 427 建立四叉树

    427. 建立四叉树 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相 ...

  5. java实现圆周率与级数

    ** 圆周率与级数** 圆周率 我国古代数学家对圆周率方面的研究工作,成绩是突出的.三国时期的刘徽.南北朝时期的祖冲之都在这个领域取得过辉煌战绩. 有了计算机,圆周率的计算变得十分容易了.如今,人们创 ...

  6. Linux 重装MySQL

    1.首先查看当前MySQL的安装情况,查找之前是否安装了MySQL rpm -qa|grep -i mysql 可以看到如下图: 因为我是使用的宝塔面板一键安装的LAMP,所以显示安装了bt-mysq ...

  7. Jmeter用beanshell将相应中的参数写入到本地文件中

    实现效果: 将每次请求的指定参数写入到本地csv文件中. 实际场景:将登录请求中,服务器返回的token值获取并写入到本地csv文件中,供其他接口调用.这样在压测单接口时,不需要再进行登录,避免压测单 ...

  8. css实现朋友圈照片排列布局

    纯css实现朋友圈不同数量图片不同布局 首先可以打开朋友圈观察不同图片数量的几种布局,也可参考下图示例: 可以发现 除1张图片,4张图片特殊外,其他数量图片均使用一行三列的方式排列: 假设有如下HTM ...

  9. ServiceStack.Redis 5.8 版本去掉每小时 6000 次访问限制

    ServiceStack.Redis这个官方 Redis 访问组件从4.0版本后开始商业化了,在使用的时候会有很多限制: 1.类型限制 类型限制是20,这个组件自带序列化功能,使得我们可以直接把对象保 ...

  10. LVS实现四层负载均衡

    LVS详解(思维导图) 1. 集群概述 1.1 Linux Cluster Linux Cluster的类型 LB(Load Balance) HA(High Available) HP(High P ...