可变与不可变类型

可变与不可变类型

(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))
#元组内的元素无法修改,指的是元组内索引指向的内存地址不能被修改。元组是不可变数据类型。
posted @ 2023-12-05 19:33  苏苏!!  阅读(38)  评论(0)    收藏  举报