Python中Tuple是一种不可变序列,使用小括号"()"来定义。Tuple中可以存储任意类型的数据,包括数字、字符串、列表等等。Tuple拥有列表(List)所有的基本操作,比如切片,索引,迭代操作等。在使用元组时,需要注意它是不可变的,这意味着我们不能直接对元组进行增加、删除或修改操作。然而,我们可以通过创建一个新的元组来对原有元组进行操作或使用内置函数。
一、Tuple基本操作
1、Tuple的定义:使用小括号"()"定义一个元组,元素之间使用逗号","隔开。
tuple1 = (1,2,3) tuple2 = ('hello','world',123) tuple3 = (True,[1,2,3],'python') print(tuple1) print(tuple2) print(tuple3)
输出结果:
(1, 2, 3) ('hello', 'world', 123) (True, [1, 2, 3], 'python')
2、Tuple索引和切片:元组支持索引和切片操作,用法与列表相同
tuple1 = (1,2,3,4,5) tuple2 = ('a','b','c','d','e') print(tuple1[0]) print(tuple2[-1]) print(tuple1[2:4]) print(tuple2[:3]) print(tuple1[2:]) print(tuple2[:-2])
输出结果:
1 e (3, 4) ('a', 'b', 'c') (3, 4, 5) ('a', 'b')
3、Tuple的操作:
由于 Tuple 是不可变数据类型,所以不能使用 append()、insert()、remove()、pop() 等方法进行操作。但我们可以利用以下方法来间接实现:
tuple1 = (1,2,3,4,5) tuple2 = ('a','b','c','d','e') # 通过合并两个元组来实现新增元素 tuple3 = tuple1 + (6,) print(tuple3) # 元组拆包 a, b, c = tuple2 print(a,b,c) # 利用内置函数实现其他操作 print(len(tuple1)) print(tuple2.count('a')) print(tuple1.index(3))
输出结果:
(1, 2, 3, 4, 5, 6) a b c 5 1 2
二、Tuple与List的比较
用途的不同:Tuple代表不可改变的有序序列,常常用于表达多个相关值组成的集合; List 的长度可变,可以往其中加入新的元素或从中删除某个元素,常常用于需要动态操作的数据。
速度的比较:Tuple 是不可变序列,因此其创建和查找速度较 List 更快,但是 List 的迭代速度更快,尤其是当其长度巨大时。
写作的偏好:在 Python 编程领域中,由于写起来更方便,所以 List 更为流行。但在使用时,需要根据实际场景选择使用哪种数据类型。
三、Tuple的应用场景
Tuple 的应用场景很多,如:
1、作为函数返回值,往往使用 Tuple 来容纳多个值。 Python 中经常使用接收元组的方式来实现多个返回值。
# 计算并返回一个人的身高、体重以及BMI值 def get_bmi_info(height,weight): bmi = weight / (height/100)**2 # 计算BMI值 return height, weight, bmi # 调用函数 info_tuple = get_bmi_info(170, 60) print(info_tuple) print("身高是 %.2f,体重是 %.2f,BMI指数是 %.2f" % info_tuple)
输出结果:
(170, 60, 20.76) 身高是 170.00,体重是 60.00,BMI指数是 20.76
2、当你向函数中传递许多参数时,使用 Tuple 可以很好地传递任意数量的参数。这被称为“元组打包”。
# 实现元组打包 def calc(*args): res = 0 for num in args: res += num return res # 调用函数 result = calc(1,2,3,4,5) print(result)
输出结果:
15
3、Tuple在数据科学中常用于搭建无需变化的数据结构,如记录GPS位置的坐标,用来存储时间序列,或是存放代表色彩的 RGB 值。
point = (121.47, 31.23) colors = ((255, 255, 255), (0, 0, 0))
4、可以使用 Tuple 存储和传递静态一致的信息。
# 存储标准英文字母表的大小和信息 alphabet = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z') print(len(alphabet)) print(alphabet[0],alphabet[12],alphabet[24])
输出结果:
26 a m y
从上述例子中,我们可以了解到 Tuple 的简便性、速度、安全性与可靠性,同时也为我们提供了一些更为全面的数据类型选择。