元组
什么是元组
Python内置的数据结构之一,是一个不可变序列
元组以()定义
字典以{}定义
而列表以[]定义
补充
- 不可变序列:字符串、元组
- 没有增、删、改的操作
- 可变序列:列表、字典
- 可以对序列进行增、删、改操作,对象地址不发生改变
元组的创建
- 直接使用小括号
t = (‘python’,‘java’,‘C++’)
- 使用内置函数tuple()
t = tuple((‘python’,‘java’,‘C++’))
- 只包含一个元组的元素需要使用小括号和逗号
t = (5,)
如果不加逗号,则会被当作整数5
空列表的创建
1.list=[]
2.list=list()
空字典的创建
1.d={}
2.d=dict()
空元组的创建
1.t=()
2.t=tuple()
探讨:为什么要将元组设计成不可变序列
-
在多任务环境下,同时操作对象时不需要加锁,因此,在程序中尽量使用不可变序列
-
注意事项:元组中储存的是对象的引用
- 如果元组中对象本身时不可变对象,则不能再引用其他对象
- 如果元组中的对象时可变对象,则可变对象的引用不允许改变,但是数据可以改变
例子:
t = (10,[20,30],40)
print(t)
#(10, [20, 30], 40)
print(type(t))
#<class 'tuple'>
print(t[0],type(t[0]),id(t[0]))
#10 <class 'int'> 3135830256208
print(t[1],type(t[1]),id(t[1]))
#[20, 30] <class 'list'> 3135866928448
print(t[2],type(t[2]),id(t[2]))
#40 <class 'int'> 3135830257168
print(id(100))
3135830447568
#尝试将t[1]修改为100
#t[1]=100
#报错了!!!!!
#Traceback (most recent call last):File "<pyshell#9>", line 1, in <module>
#t[1]=100
#TypeError: 'tuple' object does not support item assignment
#列表是可变序列,向列表中添加元素,列表的内存地址不变
t[1].append(100)
print(t[1])
#[20, 30, 100]
print(id(t[1]))
#3135866928448
元组的遍历
1.通过索引获取
2.元组是可迭代对象,所以可以使用for…in进行遍历