python基础入门7:元组


前言

本文主要介绍python程序中的元组及其相关操作。本文学习材料来自马士兵Python中入门基础版(基础语法) 2020最新版Python小白教程。视频链接https://www.bilibili.com/video/BV1wD4y1o7AS?p=71&spm_id_from=pageDriver


提示:以下是本篇文章正文内容,下面案例可供参考

元组

元组是Python内置的数据结构之一,是一个不可变序列。由小括号与元素构成,元素之间需要用逗号隔开。如:tuple1 = (‘python’, ‘hello’, 90)。

元组中存储的是对象的引用,其本身是一个不可变序列,但其元素可以是可变的也可以是不可变的数据序列,所以可能会出现以下两种情况:

1)如果元组中对象本身为不可变对象,则该元组不能再引用其他对象;

2)如果元组中的对象存在可变对象,则其中的可变对象的引用不会改变,但该可变对象的数据是可以改变的。
代码示例
尝试将该元组 t = (10, [20, 30], 9) 中的元素为列表的元素改为整型数字100。

t = (10, [20, 30], 9)
print(t, type(t))
print(t[0], type(t[0]), id(t[0]))#通过id去查看内存的地址
print(t[1], type(t[1]), id(t[1]))
print(t[2], type(t[2]), id(t[2]))
'''尝试将t[1]修改为100'''
#t[1] = 100
print('原元组为:', t, id(t))
print('原元组中原列表数据情况:', t[1], type(t[1]), id(t[1]))
t[1].append(100)
print('列表元素改变后新的元组为:', t, id(t))
print('添加元素后元组新列表数据情况', t[1], type(t[1]), id(t[1]))
'''
输出结果为:
t[1] = 100
TypeError: 'tuple' object does not support item assignment
'''
'''尝试改变元组中元素为列表的列表元素,添加元素100'''
t[1].append(100)
print(t)
print(t[1], type(t[1]), id(t[1]))

'''输出结果为:
原元组为: (10, [20, 30], 9) 2965918161280
原元组中原列表数据情况: [20, 30] <class 'list'> 2965917197184
列表元素改变后新的元组为: (10, [20, 30, 100], 9) 2965918161280
添加元素后元组新列表数据情况 [20, 30, 100] <class 'list'> 2965917197184
'''

改变前后列表作为可变序列发生了变化,但元组并未发生改变,改变前后引用,即id不变。

不可变序列与可变序列

  • 不可变序列
    不可变序列没有增、删、改的操作,如字符串、元组为不可变序列。

不可变序列的优势:在多任务环境下,同时操作对象时不需要加锁。因此,在程序中尽量使用不可变序列。

  • 可变序列
    可变序列可以对序列执行增、删、改操作,对象地址不发生更改,如列表、字典。

代码演示

'''可变序列与不可变序列'''
'''可变序列如列表、字典'''
lst = [1, 2, 3]
print('原列表的标识为:', id(lst))
lst.append(4)
print(lst, '添加新元素后的列表的标识为:', id(lst))

'''不可变序列如字符串、元组'''
str1 = 'happy'
print('原字符串的标识为:', id(str1))
str1 = str1 + 'newyear'
print(str1, '更改后的字符串的标识为:', id(str1))

输出结果为:

原列表的标识为: 1728747725760
[1, 2, 3, 4] 添加新元素后的列表的标识为: 1728747725760

原字符串的标识为: 1728749054320
happynewyear 更改后的字符串的标识为: 1728749158128

元组的创建方式

  1. 直接使用小括号
  2. 使用内置函数tuple()

代码演示

'''直接使用小括号创建元组'''
t1 = ()#创建一个空元组
t2 = ('happy', 'new', 'year', 2022)
t22 = 'happy', 'new', 'year', 2022
t3 = ('happy')
t4 = ('happy',)
print(t1, type(t1))
print(t2, 't2的类型为:',type(t2))
print(t22, 't22的类型为:', type(t22))
print(t3, 't3的类型为:', type(t3))
print(t4, 't4的类型为:', type(t4))

'''使用内置函数tuple()创建元组'''
t5 = tuple()#创建空元组
print(t5)
t6 = tuple(('happy', 'tiger', 'year'))#一般使用tuple函数创建元组时,使用小括号包裹元素
print(t6,type(t6))
t7 = tuple(['happy', 'tiger', 'year'])#也可使用中括号
print(t7,type(t7))
t8 = tuple({'happy', 'tiger', 'year'})#也可使用大括号,但是使用大括号会带有字典的无序性的特点
print(t8,type(t8))

输出结果为:

() <class 'tuple'>
('happy', 'new', 'year', 2022) t2的类型为: <class 'tuple'>
('happy', 'new', 'year', 2022) t22的类型为: <class 'tuple'>
happy t3的类型为: <class 'str'>
('happy',) t4的类型为: <class 'tuple'>
()
('happy', 'tiger', 'year') <class 'tuple'>
('happy', 'tiger', 'year') <class 'tuple'>
('happy', 'year', 'tiger') <class 'tuple'>

  1. 观察t22, 其类型亦为元组,所以在多个元素存在时,构建元组时可省略括号
  2. 观察上述元组 t3 与 t4, 若所构建的元组只有一个元素,则需要在元素后添加逗号,否则所创建的不是元组,其类型同这一个元素的类型。如t3即为字符串类型。

元组的遍历

  1. 若知道元组中元素的个数,则个直接使用索引进行遍历
  2. 若不知道元组中元素的个数,则可使用for-in 循环遍历元组的元素
       for item in 元组名:
            print(item)

代码示例

t = (10, [20, 30], 9)
print('使用索引遍历元组元素为:')
print(t[0])
print(t[1])
print(t[2])

'''使用for-in循环遍历元组元素'''
print('使用for-in 循环遍历出的元组元素为:')
for item in t:
    print(item)

输出结果为:

使用索引遍历元组元素为:
10
[20, 30]
9
使用for-in 循环遍历出的元组元素为:
10
[20, 30]
9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值