Python 的元组与列表类似, 不同之处在于元组的元素不能修改, 因此也叫不可变的列表.
在形式上, 元组由一对圆括号()
包含的元素序列组成, 元素之间用逗号 ,
分隔.
在内容上, 元组的元素类型可以不同, 也可以为空.
通常情况下, 元组用来保存程序中不能修改的数据.
元组的创建和删除
使用赋值运算符直接创建元组
同其他类型的变量一样, 元组也可以使用赋值运算符直接创建:
tuple_name = (element1, element2,..., elementN)
创建元组的语法和列表的语法类似, 只是把方括号 []
改成圆括号 ()
而已.
事实上,小括号也不是必须的,只要保证元素之间用逗号 ,
分隔, Python 都会自动将其识别为元组.
如果元组中只有一个元素,必须在元素后面添加逗号 ,
,否则 Python 会将其识别为其他数据类型:
tuple_name = (element1,)
创建空元组
如果元组中没有元素,可以直接使用空的圆括号 ()
创建空元组:
empty_tuple = ()
创建数值元组
可以使用tuple()函数来创建数值元组:
tuple()函数的语法如下:
tuple(iterable)
参数iterable
可以是列表, 字符串, 元组等可迭代对象, 函数将其转换为元组并返回.
删除元组
当不再需要元组时, 可以使用del语句删除它:
del tuple_name
元组元素的访问
想要输出元组的元素,可以直接使用print()函数:
“`python
print(tuple_name)
也可以使用索引或切片来访问元组的元素:
python
print(tuple_name[index]) # 输出第index个元素
print(tuple_name[start:end]) # 输出从start到end-1的元素
同列表一样, 元组也可以用for循环来进行遍历, 也可用for循环结合enumerate()函数来同时获得索引和元素:
python
for i, element in enumerate(tuple_name):
print(i, element)
例如:
python
print(长歌行)
tuple_name=(“青青园中葵”,”朝露待日晞”,”阳春布德泽”,”万物生光辉”, “常恐秋节至”,
“焜黄华叶衰”,”百川东到海”,”何时复西归”,”少壮不努力”,”老大徒伤悲”)
for i, element in enumerate(tuple_name):
if i%2==0:
print(element+”,”,end=””)
else:
print(element+”。”)
输出:
长歌行
青青园中葵,朝露待日晞。
阳春布德泽,万物生光辉。
常恐秋节至,焜黄华叶衰。
百川东到海,何时复西归。
少壮不努力,老大徒伤悲。
TIPS: 在print()函数中使用`,end="`表示不换行输出, 即下一个print()输出的内容会接在上一个输出的后面.
### 元组的解包
元组可以将元组中的元素赋值给多个变量, 例如:
python
tuple_name = (1, 2, 3)
a, b, c = tuple_name
print(a, b, c)
输出:
1 2 3
### 修改元组
元组是不可变的, 因此不能修改元组的元素. 但是我们可以对元组进行重新赋值, 这样可以创建一个新的元组.
也可以对元组进行连接组合, 注意在进行元组连接时,连接的内容必须都是元组, 而不是其他数据类型.
### 元组推导式
元组推导式可以用来创建元组. 它的表现形式和列表推导式类似, 只是把方括号 `[]` 改成圆括号 `()` 而已.
但是又略有区别, 如下, 生成一个包含10个随机数的元组:
python
import random
tuple_name =(random.randint(1, 100) for i in range(10))
print(tuple_name)
输出:
at 0x000002060DA6D7E0>
使用元组推导式生成的元组是一个生成器对象, 要将其转换为元组, 可以使用tuple()函数:
python
import random
tuple_name =(random.randint(1, 100) for i in range(10))
tuple_name = tuple(tuple_name)
print(tuple_name)
输出:
(42, 73, 92, 10, 52, 22, 17, 81, 31, 61)
“`
元组的运算
与列表一样, 元组之间可以使用 +, +=和 * 号进行运算. 这就意味着他们可以组合和复制, 运算后会生成一个新的元组.
元组的内置函数
- len()函数: 返回元组的长度.
- max()函数: 返回元组中最大的元素.
- min()函数: 返回元组中最小的元素.
- sum()函数: 返回元组中所有元素的和.
- tuple()函数: 将列表, 字符串, 元组等可迭代对象转换为元组.
元组和列表的区别:
元组和列表都属于序列, 都可以按照一定的顺序存储元素, 两者区别主要有:
- 列表属于可变序列, 元素可以修改, 元组属于不可变序列, 元素不能修改,除非整体替换.
- 列表可以使用append(),extend()等方法进行修改, 元组则不能.
- 列表可以使用切片访问和修改元素, 元组只能访问元素, 不能修改元素.
- 元组比列表更加轻量级, 占用内存更少.
- 元组可以作为字典的键, 列表不能作为字典的键.