IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python之元组 -> 正文阅读

[Python知识库]python之元组


??元组既能像列表那样同时容纳多种类型的对象,也拥有字符串不可变的特性。

1 元组和列表的不同点

?? ? \bullet ? 列表是使用方括号,元组则是圆括号(也可以不带圆括号)

>>> tuple = (1, 2, 3, "hello", "world", "中国人")
>>> tuple
(1, 2, 3, 'hello', 'world', '中国人')
>>> tuple = 1, 2, 3, "hello", "world", "中国人"
>>> tuple
(1, 2, 3, 'hello', 'world', '中国人')
>>> 

?? ? \bullet ? 列表中的元素可以被修改,而元组不行

>>> tuple = (1, 2, 3, "hello", "world", "中国人")
>>> tuple[0] = 0
Traceback (most recent call last):
  File "<pyshell#154>", line 1, in <module>
    tuple[0] = 0
TypeError: 'tuple' object does not support item assignment
>>> 

?? ? \bullet ? 列表中涉及到修改元素的方法(增、删、改)元组均不支持

?? ? \bullet ? 列表的推导式叫列表推导式,元组的 “推导式” 叫生成器表达式

>>> tuple = (1, 2, 3, 4, 5)
>>> [each * 2 for each in tuple]
[2, 4, 6, 8, 10]
>>> (each * 2 for each in tuple)
<generator object <genexpr> at 0x0000022C591D20B0>
>>> 

2 元组和列表的相同点

?? ? \bullet ? 都可以通过下标获取元素

>>> tuple = (1, 2, 3, "hello", "world", "中国人")
>>> tuple[0]
1
>>> tuple[5]
'中国人'
>>> tuple[-1]
'中国人'
>>> 

?? ? \bullet ? 都支持切片操作,因为切片的含义是将目标对象中的元素以某种特定的组合导出,而非修改对象本身。

>>> tuple = (1, 2, 3, "hello", "world", "中国人")
>>> tuple[:3]
(1, 2, 3)
>>> tuple[3:]
('hello', 'world', '中国人')
>>> tuple[:]
(1, 2, 3, 'hello', 'world', '中国人')
>>> tuple[::2]
(1, 3, 'world')
>>> tuple[::-1]
('中国人', 'world', 'hello', 3, 2, 1)
>>> 

?? ? \bullet ? 都支持 count() 方法和 index() 方法

>>> tuple = (3, 1, 9, 6, 8, 3, 5, 3)
>>> tuple.count(3)
3
>>> tuple = (1, 2, 3, "hello", "world", "中国人")
>>> tuple.index("hello")
3
>>> 

?? ? \bullet ? 都支持拼接(+)和重复(*)运算符

>>> tuple1 = (1, 2, 3)
>>> tuple2 = (4, 5, 6)
>>> tuple1 + tuple2
(1, 2, 3, 4, 5, 6)
>>> tuple1 * 3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> 

?? ? \bullet ? 都支持嵌套

>>> tuple1 = (1, 2, 3)
>>> tuple2 = (4, 5, 6)
>>> tuple = tuple1, tuple2
>>> tuple
((1, 2, 3), (4, 5, 6))
>>> 

?? ? \bullet ? 都支持迭代

>>> tuple = ((1, 2, 3), (4, 5, 6))
>>> for i in tuple:
	for each in i:
		print(each)
1
2
3
4
5
6
>>> 

3 生成一个元素的元组

??当元组只有一个元素的时候,不要这么写:

>>> x = (520)
>>> type(x)
<class 'int'>
>>> 

而应该这么写:

>>> x = (520,)
>>> x
(520,)
>>> type(x)
<class 'tuple'>
>>> 

或者这么写:

>>> x = 520,
>>> x
(520,)
>>> type(x)
<class 'tuple'>
>>> 

4 打包和解包

??生成一个元组我们有时候也称之为元组的打包:

>>> tuple = (1, 2, 3, "hello", "world")
>>> tuple
(1, 2, 3, 'hello', 'world')
>>> 

??将它们一次性赋值给五个变量名的行为,我们称之为解包:

>>> tuple = (1, 2, 3, "hello", "world")
>>> a, b, c, d, e = tuple
>>> a
1
>>> b
2
>>> c
3
>>> d
'hello'
>>> e
'world'
>>> 

??列表也可以进行解包操作:

>>> list = [1, 2, 3, "hello", "world"]
>>> a, b, c, d, e = list
>>> a
1
>>> b
2
>>> c
3
>>> d
'hello'
>>> e
'world'
>>> 

??字符串也可以进行解包操作:

>>> string = "hello"
>>> a, b, c, d, e = string
>>> a
'h'
>>> b
'e'
>>> c
'l'
>>> d
'l'
>>> e
'o'
>>> 

??需要注意的一点是:不管是哪种序列的解包操作,赋值号左侧的变量名数量,必须跟右侧序列的元素数量一致,否则通常都会报错。有一种特例,可以进行如下操作:

>>> tuple = (1, 2, 3, "hello", "world")
>>> a, b, *c = tuple
>>> a
1
>>> b
2
>>> c
[3, 'hello', 'world']
>>> 

5 多重赋值

>>> x, y = 10, 20
>>> x
10
>>> y
20
>>> 

??上述多重赋值的背后实现逻辑就是先通过元组进行打包,然后再将元组进行解包:

>>> _ = (10, 20)
>>> x, y = _
>>> x
10
>>> y
20
>>> 

6 如何对元组进行修改

??在前面已经介绍过元组中的元素是不可以修改的,但是也有一种特殊情况,如下例子:

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = (a, b)
>>> c
([1, 2, 3], [4, 5, 6])
>>> c[0][0] = 0
>>> c
([0, 2, 3], [4, 5, 6])
>>> 

??在上述例子中,首先申明了两个列表,然后把这两个列表放进一个元组,于是这两个列表就成为了元组c的两个元素,在这种情况下,元组就变成可以修改的了。也就是说,元组中的元素是不可以变的,但是当元组中的元素是指向一个可变的列表,那此时就可以修改该列表,从而达到修改元组的目的。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:58:44  更:2021-08-13 11:59:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:51:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码