tuple

'''
序列(sequence):元素有的是可变的、有的是不可变的,元素是有序排列的,可以使用索引和切片按照偏移量获取元素值
字符串:不可变、有序,可以索引和切片
列表:可变、有序,可以索引和切片
元组:不可变、有序,可以索引和切片,和列表相似,可以存放任意类型
    定义:使用(),用逗号分隔元素,其中至少要有一个逗号,空元组可以不使用逗号
注意事项:
    1、获取元组数据:tuple1=[1],tuple1=[1:3],利用索引和切片均可以,支持逆向索引tuple1[-1]
    2、可以把字符串看做一个特殊的元组:str1='hello'----->('h','e','l','l','o'),也可以将字符串直接转为元组
    3、元组不可变,不可以改变其中的元素
    4、虽然元组不可变,但是它里面可以存放可变的元素
    5、tuple3=(12,'ad',[1,2,3],(12,2,3))
        其中的元素[1,2,3]整体是不变的,在堆内存存放的是一个固定的地址
        可以改变里面的数据,改变为[1,23,3],只是改变了地址中的某些数据,但是内存中的地址没变

元组和列表的使用场景:
    使用元组不可变的场景:使用一些敏感数据,不希望别人调用篡改
    使用列表可变的场景:先创建一个数据结构,后期需要对数据进行增删改查

序列类型数据存储机制:
    字符串是最常见的数据载体:页面注册->页面填写表单->每一个字段都是存储为一个字符串
    列表和元组是起到容器的功能,可对多个元素进行操作和访问
    序列都是可以顺序访问的,通过索引的偏移量来获取对应的元素

'''
tuple1 = (12)
print(type(tuple1))  #int
tuple2 = (12, )
print(type(tuple2))  #tuple

tuple3 = (12, 'ad', [1, 2, 3], (12, 2, 3))
print(tuple3[1])  #ad
print(tuple3[1:3])  #('ad', [1, 2, 3])
print(tuple3[-1])  #(12, 2, 3)

#字符串转元组
str1 = 'hello'
tt = tuple(str1)
print(tt)  #('h', 'e', 'l', 'l', 'o')
# tuple2[0]=11 #TypeError: 'tuple' object does not support item assignment:元组对象不支持重新赋值
tuple3[2][0] = 11
print(tuple3)  #(12, 'ad', [11, 2, 3], (12, 2, 3))

 

上一篇:MongoDB更新内嵌list中某个字段的值


下一篇:2021-08-05