SET对象是由具有唯一性的 hashable 对象所组成的无序多项集,否则会报“unhashable type”的错误。目前有两种内置集合类型,set 和 frozenset。 set 类型是可变的 --- 其内容可以使用 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 =