Python的基本数据类型——Tuple

版权声明:本文首发于微信公众号——沐码人 https://blog.csdn.net/weixin_31655741/article/details/81676530

元组(Tulpe)是Python中另外的一种数据类型,和列表(List)一样也是一组有序对象的集合,大部分的属性和列表(List)一样,接下来我们来看看,Python中为什么会存在元组,以及他和列表(List)不一样的地方

定义一个元组

a=(1,2,3,4)

print(type(a))
# 输出 tuple

b=(1,True,0,'Apple',[1,2,[1,3]])

print(type(b))
# 输出 tuple

元组和列表的相同点

  • 和列表一样元素也可以通过索引和切片的方式访问元素
a=(1,True,0,'Apple',[1,2,[1,3]])

# 通过索引访问
print(a[2])
# 输出 0

print(a[-1])
# 输出 [1,2,[1,3]]

# 通过切片访问
print(a[0:2])
# 输出 (1,2)

print(a[:-1])
# 输出 (1, True, 0, 'Apple')
  • 通过 +、* 添加元素
a=(1,2,3)
a+=(4,5,6)
print(a)
# 输出 (1,2,3,4,5,6)

b=a*3
print(b)
# 输出 (1, 2, 3, 1, 2, 3, 1, 2, 3)
  • 同样适用于元组的一些内置函数
a=(1,2,3)

# 判断一个元素是否存在于元组中
print(1 in a)
# 输出 True

# 获取元组的长度
print(len(a))
# 输出 3

# 获取元组中最大元素
print(max(a))
# 输出 3

# 获取元组中最小元素
print(min(a))
# 输出 1

# 获取元组中元素的下标
print(a.index(3))
# 输出 2

# 获取元组中元素的个数
print(a.count(2))
# 输出 1

# 计算元组中元素的和
print(sum(a))

元组和列表有什么区别

看到元组的定义和访问元素的方式,你可能会很困惑,别人家的语言都没这个数据类型,Python这不是找事吗?为什么要设计一个和列表一样属性的数据类型,老子是真学不动啦!先别急,你只需记住以下几点即可。

  • 列表定义的时候使用[ ],元组使用( )
  • 列表可以改变的,但是元组不可变,也就是元组定义好以后我们不能修改里面的元素
  • 能使用元组的尽量使用元组

元组不能改变是什么意思

我们通过简单的代码演示一下数组的不可变性

a=(1,2,3,4,5)
a[0]=10

# 这个时候会抛出异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

因为元组中的元素不能修改,所以元素的没有append( )、insert( )等修改方法

删除元组

之前分享列表的时候提到删除列表的方法有很多,可以使用del、clear( )、remove( )、pop( ), 但是元组因为不能修改所以只能使用del清空元组,下面通过代码演示一下

a=(1,2,3,4)

# 删除元组
del a

元组的一些坑

  • 定义一个元素的元组
# 定义一个元素的列表
print(type([1]))
# 输出 list

# 定义一个元素的元组
print(type((1)))
# 输出 int

# 因为( ) 在python中是数学运算符号
# 正确的做法是在元素后面添加一个逗号
print(type((1,)))
# 输出tuple
  • 元组中的元素‘可变’

前面一直说元组中的元素不能修改,下面我们来演示一下元组中的元素可以修改

a=(1,2,[3,4,5])

a[0]=10
# 会报错

a[-1][-1]=10
print(a)
# 输出 (1,2,[3,4,10])

上面的案例没有报错,而且还修改成功了,你可能现在很困惑、元素到底能不能修改。

从表面上看,元组中的元素确实被修改了,但其实修改的不是元组中的元素,而是[3,4,5]这个列表中的元素。就好比元组中有三个盒子,分别是1、2、[3,4,5],这个三个盒子的位置不能变,但是这个盒子里装的东西可以变,你可以把这个盒子里的东西拿出来,你也可以往这个盒子装一头大象,但是不论你往盒子装什么,这个盒子还是之前的盒子,也就是元组中元素的指向没有发生变化。

总结:本篇文章主要分享了怎么定义一个元组、元组与列表的相同和不同之处,重点掌握元组的不可变性

猜你喜欢

转载自blog.csdn.net/weixin_31655741/article/details/81676530