Bootstrap

【 Python 全栈开发 - 语法基础篇 - 11 】Python 基本数据类型 —— 元组


一、基本数据类型

Python 中一共有6种基本数据类型,他们是:

  1. Number(数字)
  2. String(字符串)
  3. List(列表)
  4. Tuple(元组)
  5. Set(集合)
  6. Dictionary(字典)

在这6个基本数据类型中,不可变数据 有3个:

  • Number(数字)
  • String(字符串)
  • Tuple(元组)

可变数据 有3个:

  • List(列表)
  • Set(集合)
  • Dictionary(字典)

各个数据可以使用特定的语句来进行转换,如int()、str()、float()、set()等。

本期内容我们详细介绍Tuple(元组)这一类型。


二、Tuple(元组)

元组(tuple),无简写。

元组是不可修改有序序列,元组使用小括号()

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。

元组以牺牲可修改性为代价,相比于列表,它所占用的资源更小。

以下都是元组(Tuple)类型。

a = (1, 2, 3, 4)
b = ()
c = (1, )
d = 1, 2, 3, 4
e = '1', '2', '3', '4'
f = ([1, 2], [3, 4])  # 列表本是可变类型,成为元组的元素后,变为不可变类型
  • 当元组内的元素数量=1时,此元素必须在后面加上一个英文逗号,不加的话会被当成变量看;
  • 当元组内的元素数量>1时,可以省略括号,但不能省略逗号。
a = (1, )   # 元组类型
b = (1)   # 数字类型
# 使用 type() 函数获取数据的类型
print(type(a))
print(type(b))

程序输出

<class 'tuple'>
<class 'int'>

<class 'tuple'>表示元组类型,<class 'int'>表示整数类型。

(1)访问元组

一样的,我们可以使用索引来访问元组的各元素。

使用索引访问元组元素的格式为:

tuplen[index]

如代码:

tuple = (1, 2, 3, 4)
print(tuple[0])
print(tuple[-2])

运行结果为:

1
3

(2)元组切片

使用切片元组元素的格式为:

tuplen[start:end:step]
a = [1, 2, 3, 4]
print(a[1:3])
print(a[-3:-1])
print(a[2:])
print(a[:2])

输出:

[2, 3]
[2, 3]
[3, 4]
[1, 2]

(3)通过len()函数查看元组元素个数

万能len()函数又来啦!

tup = (1, 2, 3)
print(len(tup))

程序输出

3

(4)元组拼接

与字符串、列表一样,元组的拼接也使用操作符+

a = (1, 2)
b = (3, 4)
print(a+b)

程序输出

(1, 2, 3, 4)

(5)元组复制

元组的复制与字符串、列表一样,也使用操作符*

tup = (1, 2)
print(tup*3)

程序输出

(1, 2, 1, 2, 1, 2)

(6)修改元组的几种方式

tuple = (1, 2, 3, 4)
tuple[0] = 2     # 修改元组属于非法命令

以上运行结果:

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

>>>

这里报错属性为TypeError(type - 属性,error - 错误),报错信息为'tuple' object does not support item assignment。这里报错的内容我们以后的文章会讲到,大概意思是(翻译源自百度翻译):

TypeError:“tuple”对象不支持项分配

说人话,你没事修改元组干嘛!

但是,有人问,我要是一定要修改元组怎么办?来,哥教你。

方法一:赋值

第一种方法,直接进行赋值(重新覆盖)。

a = (1, 2, 3, 4)
a = (1, 2, 3, 4, 5)  # 将元组修改成 (1, 2, 3 ,4, 5)
print(a)
(1, 2, 3, 4, 5)

这应该不用讲都看得懂吧?

方法二:拼接

第二种,拼接。

tuple1 = (1, 2, 3, 4)
tuple2 = (5, 6)
tuple3 = tuple1 + tuple2
print(tuple3)
(1, 2, 3, 4, 5, 6)

方法三:元组列表相互转化

第三种,转化式,通过将元组转化成列表后修改,再转化回元组。

tuple1 = (1, 2, 3, 4)
list1 = list(tuple1)
list1.append(5)
tuple1 = tuple(list1)
print(tuple1)
(1, 2, 3, 4, 5)

list()str()int()float()tuple()set(),这些函数用来转化对应的类型。

(7)废除元组

直接删除元组自然用的就是Python的垃圾回收器del了。

tuple1 = (1, 2, 3, 4)
del tuple1
print(tuple1)

运行后会报错:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print(tuple1)
NameError: name 'tuple1' is not defined
>>>

报错原因是因为元组tuple1被我们删了,再输出,Python不知道什么是tuple1,就报错了。

(8)查看元素是否在元组内

与字符串一样,使用innot in语句。

关于这两种语句的用法,我不多说,可以参考我的文章Python 基本数据类型 之 字符串,文章中 第六点 的 方法二 有详细讲解:

我们直接上示例:

tup = (1, 2, 3, 4)
print(1 in tup)
print(5 in tup)
print(1 not in tup)
print(5 not in tup)

程序输出

True
False
False
True
;