Python学习07

集合

# 集合
# 可变的数据类型,但里面的元素必须是不可变的数据类型且不重复
# s = {1,2}
# s2 = set({1,2,3})
# print(s)

set1 = {'alex', 'guo', 'wang', 'wei'}

#
set1.add('女神')
print(set1)

# update 类似列表的extend方法 迭代添加
set1.update('abc')
print(set1)

# 删除
# 随机删除
set1.pop()
print(set1)
# 按元素删除
set1.remove('女神')
print(set1)
# 清空集合
# set1.clear()
# 删除集合
# del set1

#
for i in set1:
    print(i)

# 交集
set1 = {1,2,3,4,5}
set2 = {2,3,4,5,6}
print(set1.intersection(set2))
# 并集
set1.union(set2)
# 独有的
# set1 独有的
print(set1.difference(set2))
# set1 set2 总共独有的
print(set1.symmetric_difference(set2))
print(set1 ^ set2)
# 子集和超集
print(set1 < set2)
print(set1.issubset(set2))
print(set1 > set2)
print(set1.issuperset(set2))
# 没有共同元素
print(set1.isdisjoint(set2))

# 转化为不可变数据类型
s = frozenset('guo')
print(s, type(s))

 深浅拷贝

# 拷贝 二者指向同一块内存地址
l1 = [1,2,3]
l2 = l1
# 浅拷贝 对于list创建了新的内存地址,但是内部元素地址一样
l1 = [1,2,3,['guo','wang'],'ggg']
l2 = l1.copy()
# print(l2)
# l1[3][1] = 'g'
# print(l2)
# print(id(l1[3]), id(l2[3]))
# print(id(l1[2]), id(l2[2]))
# print(id(l1[4]), id(l2[4]))

# 这里只是把引用指向了5,所以l2的该位置引用不变
l1[2] = 5
print(l2)
# 这里l1 l2 的第四个引用指向同一个['guo', 'wang'],对其内部的修改
# 使得l1 l2都被修改
l1[3][0] = 'g'

# 深拷贝 完全创建了一个新的对象
import copy
l2 = copy.deepcopy(l1)

 

posted @ 2018-07-13 16:45  Eric云皓  阅读(95)  评论(0)    收藏  举报