python自动复制输出_python 深浅拷贝&集合

一、深浅拷贝

1.浅拷贝,只会拷贝第一层

s = [1, 'ss', '小可爱']

s1=s.copy()print(s1)

>>>

[1, 'ss', '小可爱']

s = [1, 'ss', '小可爱']

s1=s.copy()

s1[0]= 3 #修改s1的值

print(s1)

>>>

[3, 'ss', '小可爱']

#浅拷贝,只会拷贝第一层,修改完s1里面列表的值后,数据源也会改变

s = [[1, 2], 'ss', '小可爱']

s1=s.copy()

s1[0][1] = 3 #修改s1的值

print(s1)print(s)

>>>

[[1, 3], 'ss', '小可爱']

[[1, 3], 'ss', '小可爱']

2.深拷贝 = 克隆一份

importcopy

s= [[1, 2], 'ss', '小可爱']

s1=copy.deepcopy(s)

s1[0][1] = 3 #修改s1的值

print(s)print(s1)

>>>

[[1, 2], 'ss', '小可爱']

[[1, 3], 'ss', '小可爱']

二、集合:

把不同的元素集合到一起,组成集合的成员不可重复如果有重复的元素保留一个

主要作用:

1.去重,把一个列表变成集合就自动去重了;

2.关系测试,交集、并集等关系

集合的创建:

a = set('xiaoss baby')

print(a)# 输出:{'a', 'y', 'b', 'o', 'x', ' ', 'i', 's'}

分类:可变集合、不可变集合

可变集合(set):可添加和删除元素,非可哈希的,不能做字典的键和其他集合的元素

不可变集合(frozenset):与上相反

基本操作:

li = ['xiao', 2, 5]

s=set(li)

s.add('baby') #添加一个元素

print(s)

s.update('ops') #把要添加的字符串作为一个单独的序列加到集合里

print(s)

>>>

{2, 'xiao', 'baby', 5}

{2, 5, 'o', 'baby', 'p', 'xiao', 's'}

li = ['xiao', 2, 5]

s=set(li)

s.update('ooo') #重复的字符只添加一个到集合里

print(s)

>>>

{'o', 2, 'xiao', 5}

li = ['xiao', 2, 5]

s=set(li)

s.update([12, 'baby']) #添加多个元素要放到一个容器里

print(s)

>>>

{2, 5, 'baby', 12, 'xiao'}

#删除操作

li = ['xi', 2, 5]

s=set(li)#删除

s.remove(2) #()里存放要删除的内容

s.pop() #随机删除一个

s.clear() #清空

del s #直接删除整个集合

print(s)

>>>

print(set('qwer') == set('qwereq'))#True 因为两者形成的集合结果一样,所以等价

print(set('qwer') < set('qwerty'))#True < 表示后者包含前者

>>>

True

True

#联合操作

print(set('qwer') or set('qwerty')) #取两者共同的

print(set('qwer') and set('qwerty')) #取两者包含的所有序列元素

>>>

{'w', 'e', 'q', 'r'}

{'w', 'y', 'r', 't', 'e', 'q'}

a = set([1, 2, 3, 4, 5])

b= set([3, 4, 5, 6, 7])#intersection() 交集

print(a.intersection(b))print(a & b) #同上

#union 并集

print(a.union(b))print(a | b) #同上

#差集(互相不在对方里面)

print(a.difference(b)) #在a不在b 或print(a - b)

print(b.difference(a)) #在b不在a 或print(b - a)

#反向交集

print(a.symmetric_difference(b))#父集

print(a.issuperset(b)) #判断a是否完全包含于b

#子集

print(a.issubset(b))

>>>

{3, 4, 5}

{3, 4, 5}

{1, 2, 3, 4, 5, 6, 7}

{1, 2, 3, 4, 5, 6, 7}

{1, 2}

{6, 7}

{1, 2, 6, 7}

False

False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值