0
点赞
收藏
分享

微信扫一扫

basic专栏 04.基本数据类型 02.可变数据类型

女侠展昭 2022-03-25 阅读 53
python
"""
列表类型 list:
作用:存储多个数据,根据指定值索引数据

作用:按位置存储多个数据的容器
定义:li = ['A', 12,24.48, 'Apple']
类型转换:list(para) 可迭代数据 底层相当于for循环
        字典会传入key 把字典当成无序看待

"""

"""
列表的存储方式:
    0:值*的内存地址名称
    1:值*的内存地址名称
    2:值*的内存地址名称
    ...
    n:值*的内存地址名称

    变量指向列表的内存地址空间
    列表内*的内存地址名称,再指向*的内存地址空间

"""

x = 12
li = [8, x]
# 列表存储的是12的内存地址名称,而不是12这个值的内存地址
x = 24
# x的值改变了,24会新创建一个内存地址空间
# 但是列表中存储的内存地址名称没有随之改变
print(li[1])  # 不变

y = 12
lis = [8, y]
y = 24
lis = [8, y]
# 只有在y值改变后再定义列表,才会生效
print(lis[1])  # 不变


"""
队列:先进先出    FIFO:First In First Out

堆栈:先进后出    LIFO:Last In First Out

"""
# 队列
# 入栈操作
import poplib

li = []
li.append('first')
li.append('second')
li.append('third')

# 出栈操作
print(li.pop(0))
print(li.pop(0))
print(li.pop(0))


# 堆栈
# 入栈操作
li = []
li.append('first')
li.append('second')
li.append('third')

# 出栈操作
print(li.pop)
print(li.pop)
print(li.pop)


import copy

# pycharm中,退格键默认为4个空格
li1 = ['A', 12, 24, ['Apple', 1573]]
li2 = li1  # 赋值
# 二者指向同一个堆区的内存地址空间,操控同一个列表

li3 = li1.copy()  # 浅拷贝:拷贝第一层
print(id(li1), id(li3))  # 地址不同
print(id(li1[0]), id(li3[0]))  # 地址相同
# 虽然两者的内存地址不同,但是其记录的内容相同[数据或内存地址名称]
# 因此,其下层数据如果记录的是可变类型,依然会相互影响
print('-' * 21)

li4 = copy.deepcopy(li1)
print(id(li1), id(li4))  # 可变类型,地址不同
print(id(li1[0]), id(li4[0]))  # 不可变类型,地址相同
print(id(li1[3]), id(li4[3]))  # 可变类型,地址不同
print(id(li1[3][0]), id(li4[3][0]))  # 不可变类型,地址相同
# 两个列表完全独立,互不影响 针对增删改操作
# 不可变类型,被改变数值时,会重新开辟内存空间,所以不会影响原列表的数据


li1 = [12, 24]
li2 = [48, 96]
li1.append(li2)
print(li1, id(li1), id(li1[2]))
# li1存放了数值12的内存地址名称,数值24的内存地址名称,以及li2的内存地址名称
li2.append(li1)
print(li2, id(li2), id(li2[2]))
# li2存放了数值48的内存地址名称,数值96的内存地址名称,以及li1的内存地址名称

del li1
del li2
# 两个列表相互引用,称之为循环引用
# 删除直接引用后,间接引用依然存在,因此不会被回收,成为无法回收的垃圾

"""
元祖类型 tuple:
作用:存储不可更改的多个数据
只能查询,不可增加、删除和修改
定义:tup = ('Apple',12)

"""
tup1 = (12,)
# 只有一个元素时,必须加一个 ,

tup2 = (12, 'A', [18, 24, 'banana'])
tup2[2][1] = 2400  # 元祖内可变类型的数据,其内容可以更改,元祖记录的内存地址名称不可更改
print(tup2)

print(tuple('时代方舟教育'))
# 字符串转为元组,用法与列表相同

"""
字典类型 dict:
作用:存储多个键值对数据 键不可重复,值可重复
     键必须是不可变类型 值可以是任意数据类型
"""

"""
集合类型 set:
作用:可存储多个元素,集合内的元素为无序、不可重复的不可变类型
"""
举报

相关推荐

0 条评论