Python学习系列之元组(十五)

一、什么是元组

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))

  执行结果:

 

  

----------------------------------------------------------------------------------------------------------------

以上是元组的相关学习内容

posted @ 2021-02-23 10:38  寒冰宇若  阅读(124)  评论(0编辑  收藏  举报