Python集合以及操作、常用函数
# 集合
s = set('zhangsan zhangsan lisi')
a = ['zhangsan', 'lisi', 'wangwu', 'zhangsan']
b = set(a) # 列表转换为集合set 会自动去重
print(b)
c = list(s) # set集合转换为list列表会自动去重
print(c)
# 会报错 因为列表时不可哈希的 字典也是不可哈希的 (里面的元素的哈希不可哈希)
# li = [[1, 2], 3, 'joe'] # 变成 li = [1, 3, 'joe'] 就可以啦
# s = set(li)
# print(s)
# set 是无序的 不重复的 意味着 没有索引 无法根据索引找到
# set 是可变集合 而frozenset是不可变集合
# 集合的更新 添加
s = ['aa', 'bb', 'cc']
s = set(s)
s.add('u') # 添加函数
print(s)
s.update('zhang') # 原内容保留 更新 以一个序列多个元素添加到集合中
s.update('wwwwwwwwwww') # 会只添加一个w 会去重
s.update(['www', 100]) # 会以元素添加到集合中
print(s)
# 集合的删除
s.remove('bb') # 删除指定元素
s.pop() # 随机删除元素
# s.clear() # 清空集合
print(s)
# in 或 not in 来判断元素是否在set里面
print(100 in s)
print(101 in s)
print(100 not in s)
print(101 not in s)
# 等价 == != <= >=
# == 必须完全一样
print(set('joesmith') == set('joesmith 11')) # 结果为False
print(set('joesmith') == set('joesmithhhhhhh')) # 结果为True 因为 后面的集合会进行去重,然后就会和前面的一样了
print(set('joe') < set('joesmith')) # True 属于 包含关系
print(set('joe') < set('joe')) # False 不是包含关系 是等于关系
print(set('joe') or set('smith'))
print(set('joe') and set('smith'))
print(set('joe') or set('smith'))
print(set('joew') and set('joe12'))
# ①当a and b的结果为True的时候,返回的并不是True,而是运算结果的最后一位变量的值。这里是返回b的值(b and a为真,返回的是a的
# 值),当a and b结果为False的时候,返回的是第一个False的值,如a和b都为False那么返回a的值,a为真,b为假,那么返回的是b的值
# ②当a or b为真的时候,返回的是第一个真的变量的值,如,当a和b都为真,那么返回的是a。若a or b假的时候,返回的是最后一个判断
# 条件的值,这里返回的是b的值
# 交 差 并集
a = set([1, 2, 3, 4, 5])
b = set([4, 5, 6, 7, 8])
print(a.intersection(b)) # 交集
print(a & b) # 交集
print(a.union(b)) # 并集
print(a | b) # 并集
print(a.difference(b)) # 差集
print(a - b) # 差集
print(b.difference(a)) # 差集
print(b - a) # 差集
print(a.symmetric_difference(b)) # 对称差集
print(a ^ b) # 对称差集
# 父集 超集
a = set([1, 2, 3, 4, 5])
b = set([4, 5])
print(a.issuperset(b)) # a 是 b 的父集
print(a > b) # a 是 b 的父集
print(a.issubset(b))
print(a < b)
print(a.isdisjoint(b)) # 如果没有交集就会返回True
print(a.discard(3)) # 丢弃指定元素 如果不存在不做什么
要点:
- 列表转集合会自动去重
- 集合转列表会自动去重
- 列表转集合或是集合转列表如果元素不能够哈希,就会报错
- 集合添加 add(‘c’)
- update(‘zhangwwww’) 原内容保留 以多个元素添加,默认去重
- update([‘www’,999]) 会以元素添加到集合中 ‘www’ 也会添加到集合中
- remove(‘bb’) 删除指定元素
- pop() 随机删除元素
- clear() 清空集合
- 用in 和 not in 来判断元素是否在集合中
- == 必须完全一样 > <包含
- and or 较为复杂可以看代码注释理解
- 交集intersection(),&
- 并集 union() ,|
- 差集 difference() ,-
- 对称差集 symmetric_difference() , ^
- 父集 issuperset() >
- 子集 issubset() <
- isdisjoint() 没有交集就返回True 有交集则返回False
- discard() 丢弃指定元素,如果不存在则不做什么
还没有评论,来说两句吧...