[Python3] 015 冰冻集合的内置方法

目录


0. 前言

  • 英文名:frozenset()
  • 有点像元组,不能随意增减自身的元素
  • 因为不可变,所以存在哈希值
  • Python3.7 除去魔法方法,frozenset() 有 8 个内置方法

1. Python3 中如何查看 frozenset() 的内置方法

  • dir(frozenset) / dir(frozenset())
  • help(frozenset) / help(frozenset())

2. 少废话,上例子

(1) 拷贝君 copy()

  • 释义:返回一个浅拷贝
  • 示例:
# 例1

f1_1 = frozenset({1, 2, 3, 4, 5})   # 定义一个冰冻集合
f1_2 = f1_1.copy()

print("type(f1_1) =", type(f1_1))
print("f1_1 =", f1_1)
print("type(f1_2) =", type(f1_2))
print("f1_2 =", f1_2)
  • 运行结果

type(f1_1) = <class 'frozenset'>
f1_1 = frozenset({1, 2, 3, 4, 5})
type(f1_2) = <class 'frozenset'>
f1_2 = frozenset({1, 2, 3, 4, 5})


(2) 找茬君 difference()

  • 释义:将两个或更多集合的差异作为新集合返回
  • 示例:
# 例2

f2_1 = frozenset({1, 2, 3, 4, 5})
f2_2 = frozenset({1, 2, 3, 4, 5})
f2_3 = frozenset({1, 2, 3})
f2_4 = {1, 3, 5, 7, 9}

print(f2_1.difference(f2_2))
print(f2_1.difference(f2_3))
print(f2_1.difference(f2_4))
  • 运行结果

frozenset()
frozenset({4, 5})
frozenset({2, 4})

主角是使用 difference() 的集合,而不是 difference() 括号中的集合。

若有不同,输出的元素均来自于主角。


(3) intersection()

  • 释义:将两个集合的交集作为新集合返回
  • 示例:
# 例3

f3_1 = frozenset({1, 2, 3, 4, 5})
f3_2 = frozenset({6, 7, 8, 9, 0})
f3_3 = frozenset({1, 2, 3})
f3_4 = {1, 3, 5, 7, 9}

print(f3_1.intersection(f3_2))
print(f3_1.intersection(f3_3))
print(f3_1.intersection(f3_4))
  • 运行结果

frozenset()
frozenset({1, 2, 3})
frozenset({1, 3, 5})


(4) isdisjoint()

  • 释义:如果两个集合的交集为空,则返回 True
  • 示例:
# 例4

f4_1 = frozenset({1, 2, 3, 4, 5})
f4_2 = frozenset({6, 7, 8, 9, 0})
f4_3 = frozenset({1, 2, 3})

print(f4_1.isdisjoint(f4_2))
print(f4_1.isdisjoint(f4_3))
  • 运行结果

True
False


(5) issubset()

  • 释义:如果此集合是另一个集合的子集,则返回 True,否则,返回 False
  • 示例:
# 例5

f5_1 = frozenset({1, 2, 3})
f5_2 = frozenset({0, 1, 2, 3, 4})
f5_3 = frozenset({2, 3, 4})
f5_4 = frozenset({4, 5, 6})

print(f5_1.issubset(f5_2))
print(f5_1.issubset(f5_3))
print(f5_1.issubset(f5_4))
  • 运行结果

True
False
False


(6) issuperset()

  • 释义:与 issubset() 相反,如果此集合包含另一个集合,则返回 True,否则,返回 False
  • 示例:
# 例6

f6_1 = frozenset({0, 1, 2, 3, 4})
f6_2 = frozenset({1, 2, 3})
f6_3 = frozenset({3, 4, 5})
f6_4 = frozenset({5, 6, 7})

print(f6_1.issuperset(f6_2))
print(f6_1.issuperset(f6_3))
print(f6_1.issuperset(f6_4))
  • 运行结果

True
False
False

一部分包含也不行,要子集才行。


(7) symmetric_difference()

  • 释义:将两个集合的对等差分作为新集合返回
  • 示例:
# 例7

f7_1 = frozenset({1, 2, 3, 4, 5})
f7_2 = frozenset({1, 2, 3, 4, 5})
f7_3 = frozenset({1, 2, 3})
f7_4 = {1, 3, 5, 7, 9}

print(f7_1.symmetric_difference(f7_2))
print(f7_1.symmetric_difference(f7_3))
print(f7_1.symmetric_difference(f7_4))
  • 运行结果

frozenset()
frozenset({4, 5})
frozenset({2, 4, 7, 9})

difference() 不同的是将自身中与其它集合的不同之处输出。

symmetric_difference() 是将两个集合的并集去掉重复部分输出。


(8) union()

  • 释义:将集合的并集作为新集合返回
  • 示例:
# 例8

f8_1 = frozenset({1, 2, 3, 4, 5})
f8_2 = frozenset({4, 5, 6, 7, 8})
f8_3 = {3, 5, 7, 9}

print(f8_1.union(f8_2))
print(f8_1.union(f8_3))
  • 运行结果

frozenset({1, 2, 3, 4, 5, 6, 7, 8})
frozenset({1, 2, 3, 4, 5, 7, 9})

猜你喜欢

转载自www.cnblogs.com/yorkyu/p/10290735.html