呆鸟的Python数据分析Python札记Python

Python札记10_集合set

2019-06-18  本文已影响0人  皮皮大

集合setPython中的另一种数据类型,用{ }括起来表示,里面是单个的对象,不是键值对。集合的特点是里面的元素有的可变,有的不可变;元素无次序,元素不可重复。集合set可以说是列表和字典的杂合


创建集合set

创建集合有两种方式:

set创建
如果有重复的元素会自动进行过滤,一种高效的去重方式:

s1 = set("peter")
print(s1)

{'p', 't', 'e', 'r'}

{ }创建
同样的会自动去重创建,由于{ }已经使用在字典中,不建议使用

s2 = {"p", "e", "t", "e", "r"}
print(s2)

{'t', 'r', 'e', 'p'}

frozenset()

通过set创建的集合都是可变,不可哈希的集合;通过frozenset创建的是不可变的集合

哈希和不可哈希

哈希hashable:不可变的,例如字符串、整数型、布尔值等,字典的键必须是不可变的
不可哈希unhashable:可变的,例如列表、字典等,利用set()创建的集合是可变集合


集合set的方法

方法 作用
add() 给一个集合增加元素,参数只能有一个:集合与元素
update 用原有集合自身个其他东西构成的新集合,来更新原来的集合
pop 随机删除一个元素,返回元素本身;不能指定参数,不能指定删除某个元素
remove(obj) obj必须是集合set中的元素,否则报错;没有返回值
discard(obj) obj如果在集合中就执行删除,否则不进行任何操作,与remove不同
clear() 删除所有元素,bool(set)False
# add
s3 = set()
s3.add("peter")     # 一次只能增加一个元素
print(s3)
s4 = set("python")
s4.add("xiaoming")
# s4.add('[1, 2, 3]')    报错:列表是可变,不可哈希的;但集合中的元素必须是不可变的,可哈希的
print(s4)

{'peter'}
{'h', 'p', 'o', 't', 'y', 'xiaoming', 'n'}

# update
s3.update(s4)    #  将s4中的元素合并到s3中
print(s3)

{'n', 'xiaoming', 'peter', 'y', 'p', 'h', 't', 'o'}

s4.update("goo")
print(s4)

{'xiaoming', 'y', 't', 'p', 'g', 'h', 'n', 'o'}   # 注意结果的去重

s4.update((2, 3))
print(s4)

{2, 3, 't', 'g', 'xiaoming', 'p', 'n', 'h', 'y', 'o'}

集合运算

  1. 两个集合是否相等 ==
  2. 超集B.issuperset(A)B>A和子集A.issubset(B)A<B关系
  3. 并集:A.union(B)或者使用|得到新的集合,原来的集合不变
  4. 交集:A.intersection(B)或者使用&
  5. 差集:A.difference(B)或者A-B,(A中存在,B中不存在的元素)
  6. 对称差集:A.symmetric_difference(B),(A,B的并集除去A,B的交集)
上一篇 下一篇

猜你喜欢

热点阅读