一、元组 tuple
- 元组是一个不可变的序列
- 它的操作的方式基本上和列表是一致的
- 所以你在操作元组时,就把元组当成是一个不可变的列表就ok了
- 一般当我们希望数据不改变时,就使用元组,其余情况都使用列表
1. 创建元组
- 使用()来创建元组
- 元组是不可变对象,不能尝试为元组中的元素重新赋值
my_tuple = ()
print(my_tuple,type(my_tuple))
my_tuple = (1,2,3,4,5)
print(my_tuple)
print(my_tuple[3])

- 当元组不是空元组时,括号可以省略
- 如果元组不是空元组,它里边至少要有一个,(逗号)
my_tuple = 10,20,30,40
print(my_tuple , type(my_tuple))
my_tuple = 40,
print(my_tuple , type(my_tuple))

2. 元组的解包(解构)
my_tuple = 10,20,30,40
a,b,c,d = my_tuple
print("a =",a)
print("b =",b)
print("c =",c)
print("d =",d)

a = 100
b = 300
print(a , b)
a , b = b , a
print(a , b)

- 在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致
- 也可以在变量前边添加一个*,这样变量将会获取元组中所有剩余的元素
my_tuple = 10 , 20 , 30 , 40
a , b , *c = my_tuple
print('a =', a, end='\t'), print('b =', b, end='\t'), print('c =', c, end='\n')
a , *b , c = my_tuple
print('a =', a, end='\t'), print('b =', b, end='\t'), print('c =', c, end='\n')
*a , b , c = my_tuple
print('a =', a, end='\t'), print('b =', b, end='\t'), print('c =', c, end='\n')

二、可变对象
总结
- 每个对象中都保存了三个数据:
- 列表就是一个可变对象
- a[0] = 10 (改对象)
- 这个操作是在通过变量去修改对象的值
- 这种操作不会改变变量所指向的对象
- 当我们去修改对象时,如果有其他变量也指向了该对象,则修改也会在其他的变量中体现
- a = [4,5,6] (改变量)
- 这个操作是在给变量重新赋值
- 这种操作会改变变量所指向的对象
- 为一个变量重新赋值时,不会影响其他的变量
- 一般只有在为变量赋值时才是修改变量,其余的都是修改对象
实例1
a = [1,2,3]
print('修改前:', a , id(a))
a[0] = 10
print('修改后:', a , id(a))
a = [4,5,6]
print('修改后:', a , id(a))

实例2
a = [1,2,3]
b = a
print("a",a,id(a))
print("b",b,id(b))

== != 和 is is not
- == != 比较的是对象的值是否相等
- is is not 比较的是对象的id是否相等(比较两个对象是否是同一个对象)
a = [1,2,3]
b = [1,2,3]
print(a,b)
print(id(a),id(b))
print(a == b)
print(a is b)

三、字典
创建一个保护有数据的字典
- 语法:
- {key:value,key:value,key:value}
- 字典的值可以是任意对象
- 字典的键可以是任意的不可变对象(int、str、bool、tuple …),但是一般我们都会使用str
- 字典的键是不能重复的,如果出现重复的后边的会替换到前边的
d = {
'name':'孙悟空' ,
'age':18 ,
'gender':'男' ,
'name':'sunwukong'
}
print(d , type(d))

print(d['name'],d['age'],d['gender'])
