云网牛站
所在位置:首页 > Linux编程 > Linux和Windows上的Python元组(Python Tuples)基础知识

Linux和Windows上的Python元组(Python Tuples)基础知识

2021-01-28 15:29:08作者:戴进稿源:云网牛站

本文介绍Python元组(Tuples)基础知识,将向您展示如何创建元组、访问元组元素、切片元组、打开元组、更换元组、元组长度、通过元组迭代、检查元素是否存在、元组方法。以下内容可用于Linux和Windows操作系统上,安装Python可参考在Ubuntu 20.04系统下安装Python 3.9的两种方法

Linux和Windows上的Python元组(Python Tuples)基础知识

 

前言

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是项数,如下图:

Linux和Windows上的Python元组(Python Tuples)基础知识

在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,依此类推,如下图:

Linux和Windows上的Python元组(Python Tuples)基础知识

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)基础知识就等于是对元组有深入的了解了。

 

相关主题

在Python中将元素添加到列表(append、extend和insert)

精选文章
热门文章