首页 > 其他 > 详细

集合 & 深浅copy

时间:2019-03-05 12:24:15      阅读:149      评论:0      收藏:0      [点我收藏+]

集合:

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

创建

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:对深拷贝来说,列表是内存中重新创建的,列表中的可变数据类型是重新创建的,列表中的不可变数据类型是公用的。

 

集合 & 深浅copy

原文:https://www.cnblogs.com/twinkle-/p/10475834.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!