本文介绍Python元组(Tuples)基础知识,将向您展示如何创建元组、访问元组元素、切片元组、打开元组、更换元组、元组长度、通过元组迭代、检查元素是否存在、元组方法。以下内容可用于Linux和Windows操作系统上,安装Python可参考在Ubuntu 20.04系统下安装Python 3.9的两种方法。
前言 Python有几种顺序的数据类型,可让您以有组织的高效方式存储数据集合,基本序列类型是字符串、列表、元组和范围对象。 元组与列表相似,主要区别在于列表是可变的,而元组是不可变的,这意味着创建后不能更改元组。 元组既可以存储异构数据,也可以存储同类数据,但通常用于存储异构元素的集合。
创建元组(Tuples) 通过将项目放在一对用逗号分隔的圆括号[]中来创建元组,它们可以具有任意数量的项目,这些项目可以是不同的类型,这是一个例子: colors = ('orange', 'white', 'green') 元组可以具有混合数据类型的项目,您还可以声明嵌套元组,其中更多的项是列表、元组或字典: my_tuple = (1, False, ["red", "blue"], ("foo", "bar")) 圆括号之间没有元素表示一个空的元组: my_tuple = () 要创建仅包含一个元素的元组,必须在该元素后添加一个逗号: my_tuple = (1) type(my_tuple) my_tuple = (1,) type(my_tuple) 返回: <class 'int'> <class 'tuple'> 元组也可以使用tuple()构造函数构造: colors_list = ['orange', 'white', 'green'] colors_typle = tuple(colors_list) print(type(colors_typle)) 返回: <class 'tuple'> 构造元组的另一种方法是使用元组打包功能,该功能允许您从一系列用逗号分隔的对象中创建元组: directions = "North", "South", "East", "West" print(type(directions)) 返回: <class 'tuple'>
访问元组元素 元组项目可以通过其索引引用,索引是整数,从0到n-1开始,其中n是项数,如下图:
在Python中,索引用方括号指定: my_tuple[index] 例如,要访问元组的第三个元素,您将需要tuple_name[2]: directions = ("North", "South", "East", "West") directions[2] 返回: 'East' 如果引用的索引不存在,则会引发IndexError异常: Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: tuple index out of range 要访问嵌套元组中的项目,请使用多个索引: my_tuple = (1, False, ["red", "blue"], ("foo", "bar")) my_tuple[3][1] 返回: 'bar' 您还可以使用负索引访问元组元素,最后一个项目称为-1,第二个最后项目称为-2,依此类推,如下图:
directions = ("North", "South", "East", "West") directions[-2] 返回: 'East'
切片元组 在Python中,您可以使用以下形式对元组和其他顺序数据类型进行切片: sequence[start:stop:step] start是提取开始的索引,当使用负索引时,它表示从元组末尾的偏移量,如果省略此参数,则切片从索引0开始。 stop是结束提取之前的索引,结果不包含“停止”元素,当使用负索引时,它表示从元组末尾的偏移量,如果省略此参数或大于元组的长度,则切片将转到元组的末尾。 step是一个可选参数,它指定切片的步骤,如果未指定,则默认为1,如果使用负值,则切片将采用相反顺序的元素。 切片元组的结果是包含提取的元素的新元组。 以下形式在Python中是合法的: T[:] # copy whole tuple T[start:] # slice the tuple starting from the element with index "start" to the end of the tuple. T[:stop] # slice the tuple starting from the begging up to but not including the element with index "stop". T[start:stop] # slice the tuple starting from the element with index "start" up to but not including the element with index "stop". stop" T[::step] # slice the tuple with a stride of "step" 下面是一个示例,该示例如何切片从索引为1的元素开始到但不包括索引为4的元素的元组: vegetables = ('Potatoes', 'Garlic', 'Celery', 'Carrots', 'Broccoli') vegetables[1:4] 返回: ('Garlic', 'Celery', 'Carrots')
打开元组 Python功能中的序列解压缩,使您可以将分配序列对象分配给变量,这是一个例子: colors = ('orange', 'white', 'green') a, b, c = colors print(a) print(b) print(c) 根据其位置将元组元素的值分配给左侧的变量: orange white green 打开元组的包装时,左侧元组上的变量数必须与元组元素的数相同,否则,您将收到ValueError异常: colors = ('orange', 'white', 'green') a, b = colors 返回: ValueError: too many values to unpack (expected 2) 当函数返回一系列对象时,解压缩很方便: def square_area_circumference(side_lenght): return side_lenght * side_lenght, side_lenght * 4 area, circumference = square_area_circumference(5) print(area) print(circumference) 返回: 25 20
更换元组 由于元组是不可变的数据结构,因此我们无法直接更新它们,您不能在元组中添加,更改或删除元素。 如果您尝试更改元组元素,则会出现TypeError异常: colors = ("orange", "white", "green") colors[1] = "blue" 返回: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment 可变元组项的元素可以更改,例如,如果元组将列表作为其元素之一,则可以更新列表元素: my_tuple = (1, 2, [5, 6, 7]) my_tuple[2][1] = 4 print(my_tuple) 返回: (1, 2, [5, 4, 7])
元组长度 内置的len()函数返回给定对象的项目总数。 要查找元组的长度,请将其作为参数传递给len()函数: len(L) 这是一个例子: colors = ("orange", "white", "green") lenght = len(colors) print(lenght) 返回: 3
通过元组迭代 要遍历元组中的所有元素,可以使用for循环: directions = ("North", "South", "East", "West") for direction in directions: print(direction) 返回: North South East West 如果需要索引,则可以使用几种方法。最常见的方法是组合range()和len()函数或使用内置的enumerate()函数。 下面的示例显示如何检索元组中每个项目的索引和值: directions = ("North", "South", "East", "West") for i in range(len(directions)): print("Index {} : Value {}".format(i, directions[i])) 返回: Index 0 : Value North Index 1 : Value South Index 2 : Value East Index 3 : Value West 除了使用range(len(...))模式,您还可以使用enumerate()函数以更Python化的方式遍历元组: directions = ("North", "South", "East", "West") for index, value in enumerate(directions): print("Index {} : Value {}".format(index, value)) 返回: Index 0 : Value North Index 1 : Value South Index 2 : Value East Index 3 : Value West
检查元素是否存在 要检查元组中是否存在元素,可以使用in和not in运算符: colors = ("orange", "white", "green") print("orange" in colors) 输出将为True或False: True 这是使用if语句的另一个示例: colors = ("orange", "white", "green") if "blue" not in colors: print("no") else: print("yes") 返回: no
元组方法 元组对象接受以下方法: count(x)-返回“x”在元组中出现的次数。 index(x)-返回值为“x”的元素首次出现的位置。 以下是显示如何使用方法的简单示例: my_tuple = ("a", "s", "s", "q", "a", "n") print(my_tuple.count('a')) print(my_tuple.index('a')) 返回: 2 0
结论 在Python中,元组是对象的不可变序列,一旦创建就无法更改。掌握以上Python元组(Tuples)基础知识就等于是对元组有深入的了解了。
相关主题 |