元组 表现形式 tuple
元组是一个不可变序列
什么时候用列表?什么时候用元组?
一般当我们希望这个数据不变的时候我们就用元组,其余情况都用列表
1 元组 表现形式 tuple
元组是一个不可变序列
什么时候用列表?什么时候用元组?
一般当我们希望这个数据不变的时候我们就用元组,其余情况都用列表
2 创建元组
1 用()创建元组
2 用tuple()函数进行创建,可将列表,range等转换为元组形式
my_tuple = ()
# 创建了一个空的元组
my_tuple = (1,2,3,4,5)
# 创建一个元组
print(my_tuple[3])
#打印第四个元素
print(type(my_tuple))
# 打印字典类型
my_tuple[3] = 10
# 修改第四个元素
运行结果
4
File "D:/python第一节/venv/44.py", line 48, in
my_tuple[3] = 10
TypeError: 'tuple' object does not support item assignment
1 解包指的就是将元组当中每一个元素都赋值给一个变量
my_tuple = (1,2,3,4)
a,b,c,d = my_tuple
print('a = ',a)
print('b = ',b)
print('c = ',c)
print('d = ',d)
# 将元组当中每一个元素都赋值给一个变量
a = 6
b = 8
b,a = a,b
# 交换a,b
print(a,b)
运行结果
a = 1
b = 2
c = 3
d = 4
6 8
2 在对一个元组进行解包时,变量的数量要和元组中元素保持一致
当变量和元组当中的数量不一致时,我们可以在变量前面添加一个,这样变量将会获取元组中剩余的元素
不能加两个**
my_tuple = 10,20,30,40
print(my_tuple,type(my_tuple))
#打印my_tuple以及类型
a,b,*c = my_tuple
print(a,b,c)
# a,b分别对应10,20,c以列表的格式储存30,40
a,*b,c = my_tuple
print(a,b,c)
# a,b分别对应10,40,b以列表的格式储存20,30
*a,b,c = my_tuple
print(a,b,c)
# b,c分别对应30,40,a以列表的格式储存10,20
a,b,*c = [1,2,3,4,5,6,7]
print(a,b,c)
# a,b分别对应1,2,a以列表的格式储存3,4,5,6,7
a,b,*c = 'python java'
print(a,b,c)
# b,c分别对应'p','y',a以列表的格式储存't','h','o','n',' ' ,'j','a','v','a'
运行结果
(10, 20, 30, 40)
10 20 [30, 40]
10 [20, 30] 40
[10, 20] 30 40
1 2 [3, 4, 5, 6, 7]
p y ['t', 'h', 'o', 'n', ' ', 'j', 'a', 'v', 'a']
每个对象当中保存了3个数据
1 id(标识)
2 type(类型)
3 value(值)
a = [1,2,3]
print('修改前:',a,id(a))
a[0] = 10 #(改对象)
#通过索引来修改列表
#这个操作是通过变量修改对象里面的值
#这种操作不会改变变量指向的对象
print('修改后:',a,id(a))
a = [4,5,6] #(改变量)
#这个操作是在给变量重新赋值
#这种操作会改变变量所指向的对象
print('修改后:',a,id(a))
b = a
print('修改前:',a,id(a))
print('修改前:',b,id(b))
b[0] = 10
print('修改后:',a,id(a))
print('修改后:',b,id(b))
b = [10,2,3]
print('修改后:',a,id(a))
print('修改后:',b,id(b))
运行结果
修改前: [1, 2, 3] 2425890882888
修改后: [10, 2, 3] 2425890882888#对象未改变
修改后: [4, 5, 6] 2425890027528# 对象改变
修改前: [4, 5, 6] 2425890027528
修改前: [4, 5, 6] 2425890027528#修改前a,b对象相同
修改后: [10, 5, 6] 2425890027528
修改后: [10, 5, 6] 2425890027528#a,b对象未改变
修改后: [10, 5, 6] 2425890027528#a对象未改变
修改后: [10, 2, 3] 2425890882888#b对象改变,b重新分配了对象。
1 == != 比较的是对象的值是否相等
2 is 和 is not 比较的是对象的id是否相等
a = [1,2,3]
b = [1,2,3]
print(a,b)
print(id(a),id(b))
print(a is b)
print(a == b)
运行结果
[1, 2, 3] [1, 2, 3]
2470484657480 2470483802120
#a,b对象不同
False
True