一、什么是元组
1.元组
Python内置的数据结构之一,是一个不可变序列
2.元组数据结构
元组是使用()定义
3.不可变序列与可变序列
不可变序列:字符串、元组
不可变序列没有增、删、改的操作
可变序列:列表、字典
可变序列可以对序列执行增、删、改操作,对象地址不发生改变
举例:
'''可变序列:列表、字典''' lst=[10,20,45] print(id(lst)) lst.append(300) print(id(lst))
执行结果:
结果显示:可变序列变更后,其内存地址是没有变化的
'''不可变序列:字符串、元组''' s='hello' print(id(s)) s=s+'world' print(id(s)) print(s)
执行结果:
结果表示:对不可变序列进行操作后,其内存地址会变成新的的内存地址
二、元组的创建方式
1.元组的创建方式有两种
- 第一种是直接使用()
例如:t=('Python','world',98)
- 第二种是使用内置函数tuple()
例如:t=tuple(('Python','world',98))
- 只包含一个元组的元素需要使用逗号和小括号
例如:t=(10,)
如果不加逗号,则变量t的类型是str非元组类型
举例:
#元组的创建方式 '''第一种创建方式,使用()''' t=('Python','world',98) print(t) print(type(t)) '''第二种创建方式,使用内置函数tuple()''' t1=tuple(('Python','world',98)) print(t1) print(type(t1))
执行结果如下:
'''创建只有一个元素的元组''' t2=('Python') print(type(t2)) t3=('Python',) #如果元祖中只有一个元素时,逗号不能省 print(type(t3))
执行结果如下:
三、为什么要将元组设计成不可变序列
为什么要将 元组设计成不可变序列
- 在多任务环境下,同时操作对象时不需要加锁
- 因此,在程序中尽量使用不可变序列
注意事项:元组中存储的是对象的引用
a)如果元组中的对象本身不可变对象,则不能再引用其它对象
b)如果元组中的对象时可变对象,则可变对象的引用不允许改变,但数据可以改变
图示举例:
代码举例:
'''元组的不可变序列''' t=(10,[20,30],9) print(t[0],type(t[0]),id(t[0])) print(t[1],type(t[1]),id(t[1])) print(t[2],type(t[2]),id(t[2])) print(type(t)) '''给元组中列表元素新增内容''' #t[1]=100 #元组中的引用是不能被修改的,如此写会报错 t[1].append(100) #元组中的列表元素的内容可以被修改 print(t[1],type(t[1]),id(t[1]))
执行结果:
四、元组的遍历
- 元组是可迭代对象,所以可以使用for...in进行遍历
代码举例:
'''元组的遍历''' #t=(10,[20,30],9) '''第一种获取元组的方式,使用索引 使用该方式需要知道元组的长度,如果超出长度则会报tuple index out of range''' # print(t[0]) # print(t[1]) # print(t[2]) # print(t[3]) '''第二种获取元组的方式,使用for循环,可以遍历出元组所有元素''' t=(10,[20,30],9) for item in t: print(item)
执行结果如下:
另:元组不会对重复的数据去重
t=(1,2,2,3) print(t,type(t))
执行结果:
----------------------------------------------------------------------------------------------------------------
以上是元组的相关学习内容