python基础(三)

# set数据类型是无序,不重复的,且里面的值必须是可hash的,不能通过索引来获取set集合中的元素

set1 = {'1','2','ab'}
set1.add('cc')
print(set1)
# result:{'1', 'cc', '2', 'ab'} 向set集合中添加元素

set2 = {'1','2','ab'}
set2.update(['a','b','c'])
print(set2)
# result:{'2', '1', 'b', 'c', 'ab', 'a'} 迭代更新

set3 = {'1','2','ab'}
item = set3.pop()
print(item)
# 随机删除一个元素,clear清空

set4 = {'1','2','ab'}

item1 = set4.remove('ab')

print(set4,item1)

# result:{'2', '1'} None 指定删除一处元素,但返回None,set集合没法直接修改,只能通过remove删除再通过add添加

# set常用操作

s1 = {'a','b','c','d'}
s2 = {'d','e','f','g'}
# 交集操作
print(s1 & s2)
print(s1.intersection(s2))
# result:{'d'}
# 并集操作
print(s1 | s2)
print(s1.union(s2))
# result:{'a', 'f', 'e', 'g', 'c', 'b', 'd'}

# 差集操作,得到第一个中单独存在的
print(s1 - s2)
print(s1.difference(s2))
# result:{'c', 'b', 'a'}

# 反交集两个集合中单独存在的数据
print(s1 ^ s2)
print(s1.symmetric_difference(s2))


# 子集操作
print(s1 < s2)
print(s1.issubset(s2))
# result:False 判断s1是否为s2的子集

# 超集操作
print(s1 > s2)
print(s1.issuperset(s2))
# result:False 判断s1是否为s2的超集

# set集合本身是可以发生改变的,我们可以用frozenset冻结

# 深浅拷贝

lst1 = ['a','b','c','d']
lst2 = lst1.copy()

print(lst1 is lst2)
# False,重新拷贝了一份数据生成新的内存地址,浅拷贝只会拷贝第一层数据

import copy

lst1 = ['a','b','c','d',['a','b','c','d']]
lst2 = copy.deepcopy(lst1)
print(lst1[4] is lst2[4])
# False,深层拷贝内部元素完全进行拷贝复制

 

posted on 2019-10-18 16:45  素心~  阅读(146)  评论(0编辑  收藏  举报

导航