微信公众号:码农充电站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. 使用turtle库绘制渐变的圆

    import turtle as t t.pensize(3) t.pencolor("blue") t.penup() t.fd(-250) t.seth(0) t.pendow ...

  2. Java实现 蓝桥杯VIP 算法训练 一元三次方程

    问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...

  3. Java实现 LeetCode 29 两数相除

    29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商 ...

  4. java中ThreadLocal类的详细介绍(详解)

    ThreadLocal简介 变量值的共享可以使用public static的形式,所有线程都使用同一个变量,如果想实现每一个线程都有自己的共享变量该如何实现呢?JDK中的ThreadLocal类正是为 ...

  5. Linux 用户管理命令-userdel和su

    userdel [选项] 用户名,可以删除用户,常用选项 -r :删除用户的同时删除用户的家目录,一般都要用,例如:userdel -r xbb 新建用户和删除用户的本质也就是修改了 /etc/sha ...

  6. [leetcode] 股票问题

    参考文章: [1] 团灭 LeetCode 股票买卖问题 [2] Most consistent ways of dealing with the series of stock problems 其 ...

  7. 大型Electron应用本地数据库技术选型

    开发一个大型Electron的应用,或许需要在客户端存储大量的数据,比如聊天应用或邮件客户端 可选的客户端数据库方案看似很多,但一一对比下来,最优解只有一个 接下来我们就一起来经历一下这个技术选型的过 ...

  8. HDU - 2546 饭卡 题解

    题目大意 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够) ...

  9. MySQL数据库离线包安装与注册

    本文主要介绍了MySQL数据库的离线安装和将MySQL服务注册为Windows应用服务的主要步骤. 1.下在安装程序包 MySQL Community Server 5.6.15 官方下载地址http ...

  10. 若linux 的分区硬盘满,如何处理?

    一.确定是不是真的是磁盘空间不足 输入命令:df –lh 查看磁盘信息 二.如何定位最大文件目录 输入命令:cd / 进入根目录. 输入命令:du -h max-depth=1 寻找当前目录,哪个文件 ...