元组

一、元组

  • python内置的数据结构之一,是一个不可变序列

二、不可变序列与可变序列

不可变序列:字符串、元组

  • 不可变序列:没有增、删、改的操作

可变序列:列表、字典

  • 可变序列:可以对序列进行增、删改操作,对象地址不发生更改
'''
可变序列:列表、字典
'''
lst=[10,20,45]
print(id(lst))

lst.append(100)
print(id(lst))

'''
不可变序列:字符串、元组
'''
s='hello'
print(id(s))
s=s+'world'
print(id(s))

运行结果:

2232750129536
2232750129536
2232750141168
2232750463280  

三、元组的创建方式

1、直接小括号

2、使用内置函数tuple()

3、只包含一个元组的元素需要使用逗号和小括号

'''
第一种创建方式——使用()
'''

demo1=('hello','world',98)
print(demo1)
print(type(demo1))

demo2='hello','world',98
print(demo2)
print(type(demo2))

demo3='hello'
print(demo3)
print(type(demo3)) #<class 'str'>
#在这里,我们发现其是str类型,不再是元组类型,对于只有一个数据的元组,我们需要使用括号或者是逗号
demo4='hello',
print(demo4)
print(type(demo4))#<class 'tuple'>

'''
第二种方法——使用内置函数tuple()
'''
demo5=tuple(('python','world',98))
print(demo5)
print(type(demo5))

#空列表的创建方式
lst=[]
lst1=list()

#空字典的创建方式
d={}
d2=dict()

#空元组的创建方式
t=()
t2=tuple()

print(t)

四、为什么要将元组设计成不可变序列

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

注意事项:

  • 元组中存储的是对象的引用
  • 如果元组中对象本身为不可变对象,则不能再引用其他对象
  • 如果元组中对象是可变对象,则可变对象的引用不允许改变,但数据可以改变
demo=(10,[20,30],9)
print(demo)
print(demo[0],type(demo[0]),id(demo[0]))  #<class 'int'>
print(demo[1],type(demo[1]),id(demo[1]))  #<class 'list'>
print(demo[2],type(demo[2]),id(demo[2]))  #<class 'int'>

#demo[0]=100 报错:元组是并不允许修改元素的——TypeError: 'tuple' object does not support item assignment
'''
由于列表是可变序列,所以可以改变列表,向列表中添加元素,而列表的内存地址不变
'''
demo[1].append(100) #向列表中添加元素

print(demo[1],id(demo[1])) #可以发现其id号不变

运行结果:

(10, [20, 30], 9)
10 <class 'int'> 1731897420368
[20, 30] <class 'list'> 1731902849344
9 <class 'int'> 1731897420336
[20, 30, 100] 1731902849344

五、元组的遍历

demo=('python','world',98)
'''
两种方法遍历元组
1、使用索引
2、使用for循环遍历
'''
for i in demo:
    print(i)

运行结果:

python
world
98

  

原文地址:https://www.cnblogs.com/xiaoqing-ing/p/14978937.html