【Python】08、元组
文章目录
- 1.元组
- 1.1 元组创建
- 1.2 元组解包(解构)
- 2.可变对象
- 3.== 和 is
元组(tuple)是一个不可变的序列,操作方式基本和列表是一致的,操作时就把元组当成一个不可变的列表即可。
一般希望数据不改变时,使用元组,其余情况使用列表
1.元组
1.1 元组创建
my_tuple = () # 创建一个空元组
my_tuple_2 = (1,2,3,4,5,6) # 创建非空元组
my_tuple_3 = 3,4,5,6 # 非空元组括号可以省略,
print(my_tuple,type(my_tuple))
print(my_tuple_2)
print(my_tuple_3)
# 结果:
() <class 'tuple'>
(1, 2, 3, 4, 5, 6)
(3, 4, 5, 6)
***Repl Closed***
- 元组中的元素是不可更改的
my_tuple_2 = (1,2,3,4,5,6) # 创建非空元组
my_tuple_2[2] = 7
print(my_tuple_2)
# 结果:
TypeError: 'tuple' object does not support item assignment
- 非空元组里至少需要存在一个逗号,否则会被识别成整型
my_tuple_1 = 1
my_tuple_2 = 1,
print(my_tuple_1,' ',type(my_tuple_1))
print(my_tuple_2,' ',type(my_tuple_2))
# 结果:
1 <class 'int'>
(1,) <class 'tuple'>
***Repl Closed***
1.2 元组解包(解构)
- 解包指的是将元组当中的每一个元素赋值给一个变量,解包也可用在列表中
my_tuple = 2,5,6,4,7
a,b,c,d,e = my_tuple
print('a=:',a);
print('b=:',b);
print('c=:',c);
print('d=:',d);
print('e=:',e);
# 结果:
a=: 2
b=: 5
c=: 6
d=: 4
e=: 7
***Repl Closed***
- 利用解包可以交换变量的值
a = 7
b = 5
print('交换后:','a = ',a,'b = ',b)
# 利用元组解包交换
a , b = b ,a
print('交换后:','a = ',a,'b = ',b)
# 结果
交换后: a = 7 b = 5
交换后: a = 5 b = 7
***Repl Closed***
- 解包时变量的个数和元组中的元素个数必须一致,也可以在变量前加一个星号(*),这样变量将会获取到元组中所有剩余的元素。星号(*)的位置可以任意,但是只能存在一个
my_tuple = 2,5,6,7
*a,b,c = my_tuple
print('a = ',a);
print('b = ',b);
print('c = ',c);
# 结果:
a = [2, 5]
b = 6
c = 7
***Repl Closed***
2.可变对象
可变对象指的是对象中的值是可变的,列表就是一个可变对象。
修改对象值的时候,对象没有改变也就是对象的id没有变化,只是修改了值;
如果重新赋值对象,对象的id则会发生改变
a = [7,5,8,9]
print('修改前:a = ',a,'id = ',id(a))
a[0] = 32
print('修改后:a = ',a,'id = ',id(a))
a = [4,5,6]
print('赋值后:a = ',a,'id = ',id(a))
# 结果
修改前:a = [7, 5, 8, 9] id = 2199142180608
修改后:a = [32, 5, 8, 9] id = 2199142180608
赋值后:a = [4, 5, 6] id = 2199143045056
***Repl Closed***
- 在修改对象时,如果有其它变量也指向了这个对象,则修改也会在其它变量中体现
a = [7,5,8,9]
b = a
print('a = ',a,'id = ',id(a))
print('b = ',b,'id = ',id(b))
b[0] = 10
print('a = ',a,'id = ',id(a))
print('b = ',b,'id = ',id(b))
# 结果
a = [7, 5, 8, 9] id = 2428708300544
b = [7, 5, 8, 9] id = 2428708300544
a = [10, 5, 8, 9] id = 2428708300544
b = [10, 5, 8, 9] id = 2428708300544
***Repl Closed***
3.== 和 is
== 和 != 比较的是对象的值是否相等
is 和 is not 比较的是对象的id是否相等(比较两个对象是否为同一对象)
a = [7,5,8,9]
b = [7,5,8,9]
print('a = ',a,'id = ',id(a))
print('b = ',b,'id = ',id(b))
print('a == b:',a == b) # 判断对象的值是否相等
print('a is b:',a is b) # 判断是否同一个对象
# 结果
a = [7, 5, 8, 9] id = 2066203780864
b = [7, 5, 8, 9] id = 2066203633472
a == b: True
a is b: False
***Repl Closed***