2022年 11月 9日

Python元组的常规操作

Python元组的常规操作

  • 一、前言
  • 二、元组的创建和删除
  • 三、访问元组
  • 四、修改元组元素
  • 五、元组推导式

一、前言

  元组(tuple)是Python中另一个重要的序列结构,与列表类似,也是由一系列按特定顺序排列的元素组成,但是它是不可变序列。

  在形式上,列表的所有的元素都放在一个中括号“()”中,两个相邻元素间使用逗号“,”分隔。


二、元组的创建和删除

  在Python中提供了多种创建列表的方法,下面分别介绍:


  【1】使用赋值运算符直接创建列表

tuplename = (lement 1,element 2,element 3,...,element n)
  • 1

参数说明:

  • tuplename:表示元组的名称。
  • element 1,element 2,element 3,…,element n:表示元组中的元素,个数没有限制。

  【2】创建空元组

  在Python中,可以创建空元组,例如创建一个名称为num的空元组,可以使用下列代码:

num = ()
  • 1

  【3】创建数值元组

  在Python中,可以使用list()函数直接将range()函数循环出来的结果转换为元组。

  list()函数的基本语法如下:

tuple(data)
  • 1

  其中,data表示可以转换为元组的数据,其类型可以是range对象、字符串、元组或者其他可迭代类型的数据。

  例如,创建一个10~20之间(不包含20)所有偶数的元组,可以使用下面代码:

num = tuple(range(10, 20, 2))
print(num)
  • 1
  • 2

  运行结果如下:
在这里插入图片描述

说明: 使用list()函数时,不仅能通过range对象创建元组,还可以通过其他对象创建元组。


  【4】删除元组

  对于已创建的元组,不再使用时,可以使用del语句将其删除。语法格式如下:

del tuplename
  • 1

  其中,tuplename为要删除元组名称。

说明: del语句在实际开发时,并不常用。因为Python自带垃圾回收机制会自动销毁不用元组。所以我们即使不手动删除,Python也会自动将其回收。


三、访问元组

  要访问元组中的值,请使用方括号进行指定索引切片或索引,以获取该索引处的值。

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )

print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
  • 1
  • 2
  • 3
  • 4
  • 5

  执行结果如下:
在这里插入图片描述


四、修改元组元素

  元组是不可变的,这意味着我们无法更新或更改元组元素的值。 但是可以对元组重新赋值

tup = (12, 34.56)
tup = ('abc', 'xyz')
print(tup)
  • 1
  • 2
  • 3

  运行结果如下:
在这里插入图片描述
  另外我们还可以对元组进行组合来创建新的元组,如下例所示:

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print (tup3)
  • 1
  • 2
  • 3
  • 4

  运行结果如下:
在这里插入图片描述


五、元组推导式

  使用列表推导式可以快速生成一个元组,它的表现形式与列表相似。只是将推导式中的中括号“[]”,修改为小括号“()”。例如:生成10个随机数的元组,代码如下:

import random  # 导入random标准库

randomnumber = (random.randint(10, 100) for i in range(10))

print("生成的元组为", randomnumber)
  • 1
  • 2
  • 3
  • 4
  • 5

  运行结果如下:
在这里插入图片描述
  执行结果,可以看是元组推导式并不能生成列表或元组,是一个生成器,需要使用tuple()函数转换一下,代码如下:

import random  # 导入random标准库

randomnumber = (random.randint(10, 100) for i in range(10))

randomnumber = tuple(randomnumber)

print("生成的元组为", randomnumber)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

  运行结果如下:

在这里插入图片描述


例如:通过生成器推导式生成一个包含3个元素的生成器对象number,然后调用3次__next__()方法输出每个元素,然后再将生成器转换为元组输出,代码如下:

number = (i for i in range(3))
print(number.__next__())  # 输出第一个元素
print(number.__next__())  # 输出第二个元素
print(number.__next__())  # 输出第三个元素
number = tuple(number)  # 转换为元组
print(number)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  运行结果如下:
在这里插入图片描述
  通过上面示例可以看出,如果想使用该生成器对象,必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了。