一、什么是元组
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))
执行结果:
以上是元组的相关学习内容