元组概念
是Python内置数据结构,是一个不可变序列
- 不可变与可变序列
不可变序列:字符串,元组
没有增,删,改操作
可变序列:列表,字典
可以进行增,删,改操作,对象地址(id)不发生变化
例如不可变的字符串,经过增加字符串长度,id发生变化
s='hello'
print(id(s)) #2367971441776
s+=' world'
print(id(s)) #2367971234672
创建元组
直接创建
t=('python','world',98)
使用内置函数tuple
tuple((‘字符串’,数字,变量))
切记:两层括号,外层是函数,内层是元组
t=tuple(('python','world',98)) #两个括号
print(t)
只含一个元组的元素
如果只有一个元组需要使用逗号和小括号
t1=('sss') #并非元组,而是字符串
print(t1,type(t1)) #str
t2=('sss',) #加逗号,才是元组
print(t2,type(t2)) #tuple
空元组
t = ()
t = tuple( )
回忆
空列表:list=[ ]
list = list()
空字典:dict={ }
d = dict( )
空元组:t=( )
t = tuple()
元组不可变的原因
- 多任务环境下,同时操作对象时不需要加锁
- 对象内部所有数据只能看和引用,不会被修改
举个元组不可变的例子:
元组第二个元素是列表[20,30],是可变序列。但是由于元组是不可变序列,如果改变第二个元素指向100而不是列表,使元组元素的id发生变化是不可以的。而用append()给列表添加元素,并未改变id,是可以的。
不可以修改元组元素的引用,但是可以修改元组的元素的引用,前提是这个元素可变
t=(10,[20,30],40) #元组是括号,花括号是字典
print(t[0])
print(t[1])
print(t[2])
# t[1]=100 会报错
t[1].append(100)
print(t[1])
append这种操作不改变id的操作可以进行
元组的遍历
本质是for-in循环
t=tuple('python','hello',98)
for item in t:
print(item)