#一:基本使用
# 1 用途:元组是不可变的列表,能存多个值,但多个值只有取的需求,而没有改的需求,那么用元组合最合理
#
# 2 定义方式:在()内用逗号分割开,可以存放任意类型的值
# names=('alex','egon','wxx') #names=tuple(('alex','egon','wxx'))
# print(type(names))
# 强调: 当元组内只有一个元素时,务必记住加一个逗号
# x=('egon',)
# print(type(x))
# 3 常用操作+内置的方法
#1、按索引取值(正向取+反向取):只能取
# names=('alex','egon','wxx')
# names[0]='sb'
#2、切片(顾头不顾尾,步长)
# names=('alex','egon','wxx','lxx','cxxx')
# print(names[1:3]
# )
#3、长度
# names=('alex','egon','wxx','lxx','cxxx')
# print(len(names))
#4、成员运算in和not in
# names=('alex','egon','wxx','lxx','cxxx')
# print('alex' in names)
#5、循环
# names=('alex','egon','wxx','lxx','cxxx')
# for item in names:
# print(item)
# #二:该类型总结
# 1 存一个值or存多个值
# 可以存多个值,值都可以是任意数据类型
#
# 2 有序or无序
#有序
# 3 可变or不可变
#不可变
# names=('alex','egon','wxx','lxx','cxxx','lxx')
# del names[0]
# names[0]='sb'
# print(names.count('lxx'))
# print(names.index('wxx',0,3))
# names=('alex','egon','wxx','lxx','cxxx','lxx')
# names=1
# l=[1,243,3]
# l=3333
# l=['a','b','c']
# print(id(l[0]))
# l[0]='A'
# print(id(l[0]))
# names=('a','b','c')
# 列表可变的底层原理:
#指的是索引所对应的值的内存地址是可以改变的
# 元组不可变的底层原理:
#指的是索引所对应的值的内存地址是不可以改变的
#或者反过来说,只要索引对应值的内存地址没有改变,那么元组始终是没有改变的
t1=(['a','b','c'],'wc','office')
print(id(t1[0]))
print(id(t1[1]))
print(id(t1[2]))
t1[0][0]='AAAA'
print(t1)
print(id(t1[0]))