''' 序列(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))