Python基础---Set(集合)&Frozenset(不可变集合)

SET对象是由具有唯一性的 hashable 对象所组成的无序多项集,否则会报“unhashable type”的错误。目前有两种内置集合类型,set frozensetset 类型是可变的 --- 其内容可以使用 add() 和 remove() 这样的方法来改变。 由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。 frozenset 类型是不可变并且为 hashable --- 其内容在被创建后不能再改变;因此它可以被用作字典的键或其他集合的元素。

s1={"aa","bb","aa","cc","dd","aa"}
print(s1)  # {'aa', 'bb', 'cc', 'dd'}


# s2=set('apple', 'orange', 'apple', 'pear', 'orange', 'banana')
# print(s2)  # 报错:TypeError: set expected at most 1 arguments, got 6

list2=('apple', 'orange', 'apple', 'pear', 'orange', 'banana')
s2=set(list2)
print(s2)  # {'banana', 'apple', 'pear', 'orange'} 里面的值随机排序

str3="ksjfskfwefwkefwk"
s3=set(str3)
print(s3)  # {'e', 'k', 'j', 'w', 's', 'f'}
s3.add("a")
print(s3)  # {'f', 's', 'e', 'j', 'w', 'a', 'k'}

tup4=(1,2,3,2,1,"a",'a','b',"c")
s4=set(tup4)
print(s4)  # {1, 2, 3, 'a', 'c', 'b'}

temp={"a","aa","a"}
print(type(temp))  # <class 'set'>
s5=set(temp)
print(s5)  # {'a', 'aa'}
print(type(s5))  # <class 'set'>

# temp={"a","aa","a",["b","b","bbb"]}
# print(type(temp))  #报错:TypeError: unhashable type: 'list
# s5=set(temp)
# print(s5)  # {'a', 'aa'}
# print(type(s5))  # <class 'set'>

set和 frozenset共有的方法:

1.len(s):返回集合中的元素个数

s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"aa","bb","aa","cc","dd","aa"})
print(s1)  # {'aa', 'cc', 'bb', 'dd'}
print(s2)  # frozenset({'aa', 'cc', 'bb', 'dd'})
print(len(s1))  # 4
print(len(s2))  # 4

2.x in s:检测元素x是否在集合s中

s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"aa","bb","aa","cc","dd","aa","e"})

print("aa" in s1)  # True
print("aa" in s2)  # True
print("e" in s1)  # False
print("e" in s2)  # True

3.x not in s:检测元素x是否不在集合s中

s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"aa","bb","aa","cc","dd","aa","e"})

print("aa" not in s1)  # False
print("aa" not in s2)  # False
print("e" not in s1)  # True
print("e" not in s2)  # False

4.s1 isdisjoint(s2):判断两个集合s1和s2是否包含相同的元素,如果没有返回 True,否则返回 False

s1={"aa","bb","aa","cc","dd","aa"}
s2=set({"aa","bb","aa","cc","dd","aa","e"})
print(s1.isdisjoint(s2))  # False

s1={"aa","bb","aa","cc","dd","aa"}
s2=set({"a3a","bab","a1a","c3c","d3d","a2a","e"})
print(s1.isdisjoint(s2))  # True


s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"aa","bb","aa","cc","dd","aa","e"})
print(s1.isdisjoint(s2))  # False


s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"a3a","bab","a1a","c3c","d3d","a2a","e"})
print(s1.isdisjoint(s2))  # True

#---------------------------------------------------------------------#

# 非集合类型:

s1 = {"apple", "banana", "cherry"}
s2 = ("google", "runoob", "apple")
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.isdisjoint(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry"}
s2 = (("google", "runoob", "apple"))
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.isdisjoint(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry"}
s2 = "apple"
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.isdisjoint(s2)
print(s)  # True

s1 = {"apple", "banana", "cherry"}
s2 = {"banana", "apple", "cherry"}
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.isdisjoint(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry", "abc"}
s2 = {"banana", "apple", "cherry"}
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.isdisjoint(s2)
print(s)  # False

如上,set和frozenset也能互相比较

5.s1 issubset(s2):判断s1的元素是否都在s2中,即s1<=s2,有就返回True,否则返回False

s1={"aa","bb","aa","cc","dd","aa"}
s2=set({"aa","bb","aa","cc","dd","aa","e"})
print(s1.issubset(s2))  # True
print(s2.issubset(s1))  # False
print(s1<=s2)  # True
print(s2<=s1)  # False

s1={"aa","bb","aa","cc","dd","aa"}
s2=set({"a3a","bab","a1a","c3c","d3d","a2a","e"})
print(s1.issubset(s2))  # False
print(s2.issubset(s1))  #
print(s1<=s2)  # False
print(s2<=s1)  # False


s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"aa","bb","aa","cc","dd","aa","e"})
print(s1.issubset(s2))  #
print(s2.issubset(s1))  # False
print(s1<=s2)  # True
print(s2<=s1)  # False

s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"a3a","bab","a1a","c3c","d3d","a2a","e"})
print(s1.issubset(s2))  # False
print(s2.issubset(s1))  # False
print(s1<=s2)  # False
print(s2<=s1)  # False


#---------------------------------------------------------------------# 

# 非集合类型:

s1 = {"apple", "banana", "cherry"}
s2 = ("google", "runoob", "apple")
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.issubset(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry"}
s2 = (("google", "runoob", "apple"))
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.issubset(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry"}
s2 = "apple"
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.issubset(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry"}
s2 = {"banana", "apple", "cherry"}
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.issubset(s2)
print(s)  # True

s1 = {"apple", "banana", "cherry"}
s2 = {"banana", "apple", "cherry","aaa"}
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.issubset(s2)
print(s)  # True

5.s1 issuperset(s2):判断s2的元素是否都在s1中,即s2<=s1,有就返回True,否则返回False

s1={"aa","bb","aa","cc","dd","aa"}
s2=set({"aa","bb","aa","cc","dd","aa","e"})
print(s1.issuperset(s2))  # False
print(s2.issuperset(s1))  # True
print(s1>=s2)  # False
print(s2>=s1)  # True

s1={"aa","bb","aa","cc","dd","aa"}
s2=set({"a3a","bab","a1a","c3c","d3d","a2a","e"})
print(s1.issuperset(s2))  # False
print(s2.issuperset(s1))  # False
print(s1>=s2)  # False
print(s2>=s1)  # False


s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"aa","bb","aa","cc","dd","aa","e"})
print(s1.issuperset(s2))  # False
print(s2.issuperset(s1))  # True
print(s1>=s2)  # False
print(s2>=s1)  # True

s1={"aa","bb","aa","cc","dd","aa"}
s2=frozenset({"a3a","bab","a1a","c3c","d3d","a2a","e"})
print(s1.issuperset(s2))  # False
print(s2.issuperset(s1))  # False
print(s1>=s2)  # False
print(s2>=s1)  # False

#---------------------------------------------------------------------#

# 非集合类型:

s1 = {"apple", "banana", "cherry"}
s2 = ("google", "runoob", "apple")
print(s1)  # {'banana', 'cherry', 'apple'}
s = s1.issuperset(s2)
print(s)  # False

s1 = {"apple", "banana", "cherry"}
s2 = (("google", "runoob", "apple"))
print(s1)  # {'banana', 'cherry', 'apple'}
s =
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值