基本数据-集合,小数据池,深浅copy

1.集合的创建:

# set1 = set({1, 3, 'Barry', False})
# set1 = {1, 3, '太白金星', 4, 'alex', False, '武大'}
# print(set1)

2.集合的增,删

set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}
# 增:
# add
set1.add('xx')
print(set1)  #{'三粗', '景女神', '太白金星', '武大', '吴老师', 'alexsb', 'xx'}

# update迭代着增加
set1.update('fdsafgsd')
print(set1)# {'太白金星', '三粗', 'a', 'd', '吴老师', '武大', 'g', '景女神', 's', 'f', 'alexsb'}
#

set1 = {'太白金星', '景女神',  '武大', '三粗', 'alexsb', '吴老师'}


 #remove
 remove 按照元素删除
 set1.remove('alexsb')

# pop 随机删除
set1.pop()
print(set1)

3.关系测试:

#  交集
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 & set2)  #{4, 5}

 # 并集:
print(set1 | set2)  #{1, 2, 3, 4, 5, 6, 7, 8}


# 差集 -
print(set1 - set2)  #{1, 2, 3}

# 反交集
print(set1 ^ set2)  #{1, 2, 3, 6, 7, 8}


# 子集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1 < set2)   True


# # 超集
print(set2 > set1) True

3.集合的列表去重

l1 = [1,'太白', 1, 2, 2, '太白',2, 6, 6, 6, 3, '太白', 4, 5, ]
set1 = set(l1)
l1 = list(set1)
print(l1)   #[1, 2, 3, 4, '太白', 6, 5]

 4.is id == 三种的区别

# == 比较的是两边的值是否相等
# l1 = [1, 2, 3]
# l2 = [1, 2, 3]
# print(l1 == l2)



# id 是内存地址
# i = 100
# s = 'alex'
# print(id(i))
# print(id(s))

# is 判断的是内存地址是否相同
# l1 = [1, 2, 3]
# l2 = [1, 2, 3]
# print(id(l1))
# print(id(l2))
# print(l1 is l2)

5.深浅COPY

总得一句话: 
浅copy:list,dict 嵌套的可变数据类型是同一个
深copy:list,dict嵌套的可变的数据类型不是同一个

# 浅copy
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
l1.append(666)
print(l1,id(l1))   #[1, 2, 3, [22, 33], 666] 4805704
print(l2,id(l2)) #[1, 2, 3, [22, 33]] 6881608

可得知:不可变的数据类型.直接增加,l2也不会有变化.


l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
l1[-1].append(666)
print(l1) #[1, 2, 3, [22, 33, 666]]
print(l2) #[1, 2, 3, [22, 33, 666]]

因为最后一个嵌套列表是可变的.l2拷贝了l1的所有值.当l1的可变的数据类型增加一个数值时,,l2也是会跟着改变


# 深copy
需要增加import copy模块

深copy时,可变的数据类型是单独的.不会改变


# 深copy
import copy
l1 = [1, 2, 3, [22, 33]]
l2 = copy.deepcopy(l1)
# print(id(l1))
# print(id(l2))
l1[-1].append(666)
print(l1)   # [1, 2, 3, [22, 33, 666]]
print(l2)   # [1, 2, 3, [22, 33]]

可以看到.跟浅copy不同.浅copy是会跟l1一样..深copy不受l1影响
原文地址:https://www.cnblogs.com/zengluo/p/12871832.html