Python3 元组

专栏地址:最强 Python3 基础

公众号:Python 生产力



前言

元组(tuple)和列表很相似,也是 Python 集合数据类型中的一员。

元组由小括号和逗号组成 t = (1, 2, 3),和列表不一样的是,列表是可变的(mutable),而元组是不可变的(immutable)。不可变类型即是具有固定值的对象,如果想要修改存储的值,则需要创建另一个对象。从这边我们可以看出,对元组的修改和删除其实是不允许的,只允许创建新的对象来接收新的值,这样其实是对系统开销比较大,所以一般来说元组用来存放不需要经常改变的元素。

以下是元组的几个例子。这两个例子中可以看到,元组其实可以是不用写圆括号的,两个都属于元组,但是为了平常使用的时候能好区分,尽量把这个圆括号加上去。

tuple1 = 123, 456, 'Python'
tuple2 = (789, 123, 'Java')

下面例子中展示了如果要构建一个元素的元组,则必须在最后加上逗号,否则解释器不会把这个解释成元组。我们用 type() 方法来输出一下两个变量的类型,可以发现加了逗号的才是 tuple 类型,而不加逗号的会解释成其他类型。

tuple3 = (123, )
tuple4 = (123)

print(type(tuple3))
print(type(tuple4))

# 输出:
<class 'tuple'>
<class 'int'>

一、元组的操作

1. 查询

元组可以像列表一样,通过下标索引来访问其中的元素。
在这里插入图片描述

tuple1 = ('Python', 'Java', 'C++', 'Go', 'Ruby')

print(tuple1[2])
print(tuple1[-1])

# 输出:
C++
Ruby

2. 截取

元组的截取和列表的截取是相同的,也可以使用反向索引来截取。

tuple1 = ('Python', 'Java', 'C++', 'Go', 'Ruby')

print(tuple1[0:2])
print(tuple1[-3:-1])

# 输出:
('Python', 'Java')
('C++', 'Go')

3. 更新

元组因为是不可变对象,所以对其中的元素进行添加和删除都是不可以的。虽然不可以修改,但是不同的元组可以通过 “+” 操作符进行拼接,这个时候相当于合成了一个新的元组。我们可以通过打印三个元组的地址来看到,新合成的元组不是之前任何一个旧元组的地址。

tuple1 = ('Python', 'Java', 'C++')
tuple2 = ('Go', 'Ruby')
tuple3 = tuple1 + tuple2

print(tuple3)
print('tuple1 地址:', id(tuple1))
print('tuple2 地址:', id(tuple2))
print('tuple3 地址:', id(tuple3))

# 输出:
('Python', 'Java', 'C++', 'Go', 'Ruby')
tuple1 地址: 2208858740544
tuple2 地址: 2208858653824
tuple3 地址: 2208858744608

如果想要得到能更新元素的元组,可以用多个列表组成一个元组,因为列表是可变类型的,所以可以更新其中的元素,这时候相当于间接修改元组中的内容了。

tuple1 = ([1, 2, 3], [4, 5, 6])

aList = tuple1[0]
aList.append(7)

print(tuple1)

# 输出:
([1, 2, 3, 7], [4, 5, 6])

4. 删除

元组是不能删除其中某一个元素,但是可以使用 del 删除整个元组,或者对元组的引用重新赋值空元组对象。

tuple1 = ([1, 2, 3], [4, 5, 6])
del tuple1[0]

# 输出:
TypeError: 'tuple1' object doesn't support item deletion
tuple1 = ([1, 2, 3], [4, 5, 6])
del tuple1

# 输出:
NameError: name 'tuple1' is not defined
tuple2 = ('Python', 'Java')
tuple2 = ()

# 输出:
()

5. 元组运算

元组运算和列表相似,但是元组主要是用对象的拼接并生成新的元组

tu1 = (1, 2, 3)
tu2 = (4, 5, 6)

print(tu1 + tu2)
print(tu1 * 5)

# 输出:
(1, 2, 3, 4, 5, 6)
(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)

二、内置函数

元组因为是不可变的,所以内置函数不存在添加或更新等操作函数了。

tuple1 = ('Python', 'Java', 'C++', 'Go', 'Ruby')
函数名称形式描述举例结果
indextuple1.index(x[, start[, end]])查找列表中 obj 第一个匹配到的索引值tuple1.index(’Python‘)0
counttuple1.count(obj)计算 obj 对象在列表中出现的次数tuple1.count(’Java‘)1

总结

元组的内容相对于列表而言比较简单,只要记住元组是不可变类型,那也就能知道元组是不能添加或删除元素的。要想实现元组的更新等操作,那就使用可变类型的数据类型作为其元素,如列表等。


在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞎叨叨的一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值