python中difference_python difference用法_set.difference() 的用法(python3)_

1.set是一个无序且不重复的元素集合。

集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。

set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:

1)不重复

2)元素为不可变对象

#!/usr/bin/env python

# -*- coding:utf-8 -*-

a={11,22,33,24,8}

b={24,50,88,8}

c={24,8}

print(a)

#增加新的元素

a.add(35)

print(a)

#清空集合

a.clear()

#找a中存在,b中不存在的集合,并将其赋值给新变量c

c=a.difference(b)

print (c)

# 找a中存在,b中不存在的集合,并更新自己

a.difference_update(b)

print(a)

#discard移除元素,不存在的元素不报错

a.discard(11)

#remove移除元素,不存在的元素报错

a.remove(11)

#pop随机移除集合中的某个元素

a.pop()

print(a)

#两个集合的交集,intersection是将交集赋予给新的变量ret,intersection_update是取交集并更新自己

ret=a.intersection(b)

a.intersection_update(b)

print (ret)

print(a)

#判断c和a是否不存在交集(有交集False,无交集True)

print(c.isdisjoint(a))

#判断c是否是a的子集

print(c.issubset(a))

#判断c是否是a的父集

print(c.issuperset(a))

#合并集合a和b,得到的值覆盖a

a.update(b)

print(a)

#增加迭代

a.update([1,2,3])

print(a)

#合并不同项,并复制给新变量d

d=a.symmetric_difference(b)

print(d)

#合并不同项,并更新自己

a.symmetric_difference_update(b)

print(a)

2.三元运算(为真时的结果 if 判定条件 else 为假时的结果)

#说明,if判断条件为真时,name='kobe',否则name='byrant'

name='kobe' if 2>3 else "byrant"

print(name)3.赋值,深浅拷贝定义

直接赋值:其实就是对象的引用(别名)。

浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象。

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

#数字和字符串的赋值和深浅拷贝之后,内存地址都一样

1 importcopy2 n1='kobe'

3 n2=n14 print(id(n1))5 print(id(n2))6 n3=copy.copy(n1)7 print(id(n3))8 n4=copy.deepcopy(n1)9 print(id(n4))

#列表,字典赋值之后内存地址一样,深浅拷贝之后,内存地址不一样

import copy

l1=['kobe',{'k1':8,"k2":24},10]

print(l1,id(l1))

l2=l1

print(l2,id(l2))

l3=copy.copy(l1)

print(l3,id(l3))

l4=copy.deepcopy(l1)

print(l4,id(l4))

#例子:

alist=[1,2,3,["a","b"]]

import copy

a=alist

c=copy.copy(alist)

d=copy.deepcopy(alist)

print (alist) #[1, 2, 3, ['a', 'b']]

print(a) #[1, 2, 3, ['a', 'b']]

print (c) #[1, 2, 3, ['a', 'b']]

print(d) #[1, 2, 3, ['a', 'b']]

alist.append(8) #列表中增加一个元素

print (alist) #[1, 2, 3, ['a', 'b'], 8]

print(a) #赋值:[1, 2, 3, ['a', 'b'], 8] 也随着增加了元素

print (c) #浅拷贝:[1, 2, 3, ['a', 'b']] 没有拷贝增加的元素

print(d) #深拷贝:[1, 2, 3, ['a', 'b']] 没变

alist[3].append("c") #列表中第三个元素中再追加一个元素

print(alist) #[1, 2, 3, ['a', 'b', 'c'], 8]

print(a) #[1, 2, 3, ['a', 'b', 'c'], 8] 也随着增加了元素

print(c) #浅拷贝:[1, 2, 3, ['a', 'b', 'c']] 里面子对象中增加了一个元素

print(d) #深拷贝:[1, 2, 3, ['a', 'b']] 没变

#结论:

# 赋值:随着原始数据的改变而改变.

# 浅拷贝:只拷贝第一层的父对象,不拷贝子对象,原始数据的子对象中的元素改变,浅拷贝里子对象的元素也会改变.

# 深拷贝:原始对象的改变不会造成深拷贝里任何子元素的改变.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值