集合 & 深浅copy

集合:

特点:集合是可变的数据类型,但他里面的元素必须是不可变的数据类型,无序,不可重复。

创建

set1 = set({1,2,3})
或者直接创建set2 = {1,2,3}

集合的增删查:

增:
add    set1.add('女生')
update    set1.update('abc') #迭代,类似于列表的extend
删:
pop     set1.pop()           #随机删除,有返回值返回的是删除的元素
remove  set1.remove('2')     #按元素删除
clear   set1.clear()         #清空集合,结果为:set()表示空集合
del     del  set1            #删除整个集合
查:
for i in set1:
    print(i)

集合运算

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
交集:set3 = set1 & set2   print(ste3)     #结果为{4,5}
      或者ste1.intersection(set2)
并集:set3 = set1 | set2   print(set3)     #结果为{1,2,3,4,5,6,7,8}
      或者set1.union(set2)
反交集:set3 = set1 ^ set2   print(ste3)    #结果为{1,2,3,6,7,8}
      或者set1.synetric_difference(set2)
差集:set3 = set1 - set2   print(ste3)      #结果为{1,2,3}set1独有的
      set3 = set2 - set1   print(ste3)     #结果为{6,7,8}set2独有的
      或者set1.different(set2)

子集与超集

子集:
set1 = {1,2,3}
set2 = {1,2,3,4,5}
print(set1 < set2)                   #这两个相同,都说明set1是set2的子集
或者print(set1.issubset(set2))
 
超集:
set1 = {1,2,3}
set2 = {1,2,3,4,5}
print(set2 > set1)            #这两个相同,都说明set2是set1的超集
或者print(set2.issubset(set1))

去除列表中重复的元素

li = [1,2,3,4,5,5,5,6]
set1 = set(li)             #先把列表转化为集合
li = list(set1)            #再把集合转化为列表
print(li)

frozenset

set是可变数据类型,把set变为不可变数据类型用frozenset
s = frozenset('barry')
print(s,type(s))
可循环打印:
for i in s:
    print(i)

深浅copy
copy对浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与源列表中的元素是公用的。
深拷贝deepcopy:对深拷贝来说,列表是内存中重新创建的,列表中的可变数据类型是重新创建的,列表中的不可变数据类型是公用的。

猜你喜欢

转载自www.cnblogs.com/twinkle-/p/10475834.html