Python入门——第三章 列表和元组:3.3元组

Python入门


3.3元组

元组与列表类似,也是由一系列按特定顺序排列的元素组成的,但它们的主要区别在于列表是可变序列,元组是不可变序列,即元组中的元素不可以单独修改,而列表中的元素可以任意修改。

3.3.1元组的创建和删除
  • 使用赋值运算符直接创建元组
    tuplename = (element1,element2,element3...)
    

    注:创建列表使用方括号[],创建元组使用圆括号()。

    但实际上,圆括号并不是必须的,只要将一组值用逗号隔开,python就认为它是元组。

    tuplename = element1,element2,element3...
    

    如果要创建的元组只包括一个元素则需要在定义元组时,在元素后面加一个逗号

    verse= ("abc",)
    #输出verse ('abc',)   元组
    verse= ("abc")
    #输出verse abc   字符串
    
    #可使用type()函数测试变量类型
    
  • 创建空元组
    emptytuple= ()
    

    空元组可以应用于为函数传递一个空值或者返回空值。

  • 创建数值元组

    可以使用tuple()函数直接将range()函数循环出来的结果转换为数值元组,还可使用range()外的其他对象创建元组

    tuple(data)
    
    tuple(range(10,20,2)) #(10, 12, 14, 16, 18)
    
  • 删除元组
    del tuplename
    
3.3.2访问元组元素
tuplename[3]
tuplename[:3]    #切片方式
for element in  tuplename:
    print(element)           #for循环遍历
for index,item in enumerate(tuolename):    #for循环和enumerate()函数结合遍历
    ...
3.3.3修改元组元素

元组是不可变的序列,不能对它的单个元素进行修改。但是我们可以对整个元组进行重新赋值。

可对元组进行连接组合,并且连接的内容必须是元组。

3.3.4元组推导式

使用元组推导式可快速生成一个元组,它的表现形式和列表推导式类似,只是将[]改为()。

import random  #导入random标准库
randomnumber = (random.randint(10,100) for i in range(10))
print("生成的元组为:",randomnumber)
#生成的元组为:<generator object <genexpr> at 0x000001AD183AEE40>

由上面的结果可看出,使用元组推导式生成的并不是一个元组或者列表,而是一个生成器对象,这一点和列表推导式是不同的。要使用该生成器对象可以将其转换诶元组或者列表,转换为元组使用tuple()函数,转换为列表使用list()函数。

import random   #导入random标准库
randomnumber= (random.randint(10,100) for i in range(10))
randomnumber = tuple(randomnumber)  #转换为元组
print("转换后:",ranmdomnumber)   

#转换后:(21, 52, 92, 23, 78, 42, 50, 80, 83, 76)

要使用通过元组推导式生成的生成器对象,还可以直接通过for循环遍历或者直接使用__ next() __方法进行遍历。

number= (i for i in range(3))
print(number.__next__())  #输出第1个元素
print(number.__next__())  #输出第2个元素
print(number.__next__())  #输出第3个元素
number =tuple(number)     #转换为元组
print("转换为:",number)
'''
0
1
2
转换后:()
'''
number= (i for i in range(4))  #生成生成器对象
for i in number:               #遍历生成器对象
    print(i,end=' ')           #输出每个元素的值
print(tuple(number))           #转换为元组输出
# 0 1 2 3 ()

从上面两个实例可看出,无论使用哪种方法遍历后,如果还想再使用该生成器对象,都必须重新创建一个生成器对象,因为遍历后原生成器对象已经不存在了。

3.4元组与列表的区别

简单理解:

​ 列表类似于我们用铅笔写下的内容,写错了还可以擦掉。

​ 元组类似于我们用钢笔写下的内容,写错了就擦不掉了,除非换一张纸重写。

  • 列表属于可变序列,它的元素可以随时被修改或者删除;而元组属于不可变序列,其中的元素不可以被修改,只能被整体替换。
  • 列表可以使用append(),extend(),remove(),insert()和pop()等方法实现添加和修改元素;元组则没有这几个方法,因为不能在元组中添加和修改元素,同样,也不能删除元素。
  • 可以使用切片访问和修改列表中的元素。元组也支持切片,但是它只能通过切片访问元组中的元素,不支持修改。
  • 元组比列表的访问和处理速度快。所以如果只需要对其中的元素进行访问,而不进行任何修改,建议使用元组而不使用列表。
  • 列表不能作为字典的键,元组则可以。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时汾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值