python中的set

set 集合,无序不重复,元素可变

1.集合的定义

# 定义一个set集合,集合用`{}`括起来,里面的类型不可变,如元组,字符串。
my_set = {"hello", "world", 12, ("12", "123")}

# 使用工厂方式创建 传递的参数是可遍历的对象
my_set = set({"我是集合1", "我是集合2"})

# 创建不可变的集合 使用frozenset() 传递的参数是可遍历的对象
f_set = frozenset({"hello", "world", "to", "you"})

2.集合的遍历

# 集合的遍历 集合是无序的 所以集合不能用while遍历,可以使用for遍历
my_set = set({"我是集合1", "我是集合2"})
for i in my_set:
     print("我是可变的集合 %s" % i)

f_set = frozenset({"hello", "world", "to", "you"})
for j in f_set:
     print("我是不可变的集合 %s" % j)

3.set的增删方法

# 添加元素 add()
my_set = {"hello", "world", "to", "you"}
my_set.add("and")
# 添加多个元素 传的是可遍历的对象
my_set.update({"五代", " 十国"})

# 删除元素 
# 任意删除一个并返回被删除的元素 如果集合为空则返回一个keyError,程序报错
my_set.pop()

# 指定删除 删除的元素必须在集合里面,否则返回keyError ,程序报错
my_set.remove("you")
my_set.remove("hello")

# 指定删除 discard() 删除的元素若不在集合里面也不报错
my_set.discard("world")
my_set.discard("he")

# 清空所有的元素
my_set.clear()

4.集合的运算

################# 集合的运算 ######################
num1_set = {1, 2, 5, 8, 10}
num2_set = {2, 5, 7, 9, 12}
# 交集
print("两个集合的交集是 %s" % (num1_set & num2_set))
print("两个集合的交集是 %s" % num1_set.intersection(num2_set))

# 并集 
print("两个集合的并集为 %s" % (num1_set | num2_set))
print("两个集合的并集为 %s" % num1_set.union(num2_set))

# 补集
print("两个集合的补集为 %s" % (num1_set ^ num2_set))
print("两个集合的补集为 %s" % num1_set.symmetric_difference(num2_set))

# 差集 num1_set 相对 num2_set的差集
print("num1_set 相对 num2_set的差集是 %s" % (num1_set - num2_set))
print("num1_set 相对 num2_set的差集是 %s" % num1_set.difference(num2_set))
################# 判断关系 ########################
# 判断集合A是集合B的子集
A = {1, 2, 3}
B = {1, 2, 3, 4, 5, 9}
result = A.issubset(B)
print(result)
# 判断 B是A的父集
result2 = B.issuperset(A)
print(result2)
# 判断A中是否跟B没有交集 即是没有相同元素 返回True 否则返回False
result = A.isdisjoint(B)
print(result)

 

 

 

posted on 2019-12-02 11:23  此间你我皆无  阅读(270)  评论(0)    收藏  举报