可变与不可变类型
(1)堆 --先进先出
# #堆
# #先进先出
# list=[]
# for i in range(0,6):
# print(f'{i}已添加')
# list.append(i)
# print('入堆成功!')
# while list:
# print(f'{list.pop(0)}已删除')
# print('出堆结束')
(2)栈--先进后出
# # 栈
# #先进后出
# list=[]
# for i in range(0,6):
# print(f'{i}已添加')
# list.append(i)
# print('入栈成功!')
# while list:
# print(f'{list.pop()}已删除')
# print('出栈结束')
(3)可变数据类型
- 可变数据类型:值改变了,但是内存地址不改变。
- 可变数据类型:字典、列表、集合、布尔、元组中存在的可变数据类型。
"""可变数据类型"""
# # 字典
# dict = {'name': 'syh', 'age': 18}
# print(id(dict))#1783110655296
# dict['name']='susu'
# print(dict)#{'name': 'susu', 'age': 18}
# print(id(dict))#1783110655296
# # 字典中,字典的值发生了改变,但是字典的内存地址不变,所以字典时可变数据类型。
# #列表
# list=[1,2,3]
# print(id(list))#2450554706816
# list[0]=111#[111, 2, 3]
# print(list)
# print(id(list))#2450554706816
# list.append(666)#[111, 2, 3, 666]
# print(list)
# print(id(list))#2450554706816
# #列表中,列表的值发生了改变,但是列表的内存地址不变,所以列表是可变数据类型。
# #元组中存在可变类型时
# number_tuple=(1,2,3,4)
# print(id(number_tuple))
# #集合
# number_set={1,2,3,4}
# print(id(number_set))#1916430888608
# number_set.add(666)
# print(number_set)#{1, 2, 3, 4, 666}
# print(id(number_set))#1916430888608
# number_set.pop()#{2, 3, 4, 666}
# print(number_set)
# print(id(number_set))#1916430888608
# #集合中,集合不能改值,但是添加删除元素时,内存地址不变,所以集合是可变类型。
# #布尔
# is_right=True
# print(id(is_right))#140732214037352
# is_right=True
# print(id(is_right))#140732214037352
# #布尔中,布尔的内存地址不变,所以布尔是可变类型
(4)不可变数据类型
- 不可变数据类型:内存地址发生了改变,就是不可变数据类型。
- 不可变数据类型:字符串、数字类型、元组。
"""不可变数据类型"""
# #字符串
# res='syh'
# print(id(res))#1926022127024
# res='susu'
# print(id(res))#1926022156848
# #字符串内存地址发生了改变,所以字符串是不可变数据类型。
# #数字类型
# number=20
# print(id(number))#3044800136016
# number=23
# print(id(number))#3044800136112
# #数字类型内存地址发生了改变,所以数字类型是不可变类型。
#元组
#number_tuple=(1,2,3,4)
#print(id(number_tuple))
#元组内的元素无法修改,指的是元组内索引指向的内存地址不能被修改。元组是不可变数据类型。