上一章學到了集合的基礎概念,也列舉了一些簡單的方法如:
增,删,查,改(改的集合的屬性;轉列表,元組,字符串)集合的基礎知識
這一章學習的是集合的其他方法,集合在數學裡運用廣泛,未來所需要運用到人工智能,大數據分析的,這章的内容還是要認真了解和學習的。
1;交集:元素既在A集合裡出現且也在B集合裡出現的元素稱為交集。A & B
2;并集;A集合與B集合合并,去重的結果稱為并集。A | B
3;差集:隻在A集合出現但沒在B集合裡出現的,或隻在B集合裡出現但沒在A集合裡出現的。A - B B-A
4;對稱差集:排除掉A集合和B集合共有的元素後,輸出剩餘的 A ^ B (B ^ A)也是一樣
這些概念與數學裡集合的定義是一樣的,來看例子:
a=['北京','上海','廣州','深圳','廣西','湖北','湖南']
b=['北京','東北','澳大利亞','上海','澳門','香港','深圳']
# 實際情況下是列表,元組出現的情況居多,轉化為集合
a1=set(a)
b1=set(b)
print(f"交集的結果(2個集合的元素,都出現的元素是):\n{a1 & b1}")
print(f"并集的結果(2個集合元素合并去重的結果是:):\n{a1 | b1}")
print(f"差集的結果(2個集合的元素,隻在a出現過的元素是):\n{a1 - b1}")
print(f"差集的結果(2個集合的元素,隻在b出現過的元素是):\n{b1 - a1}")
print(f"對稱差集的結果(排除掉A集合和B集合共有的元素後,剩餘的是):\n{a1^b1}")
判斷返回的是True 和 False,集合的判斷不能用in
5;子集 與 真子集:
子集就是一個集合中的全部元素是另一個集合中的元素,有可能與另一個集合相等;
使用的符号是: <=
真子集就是一個集合中的元素全部是另一個集合中的元素,但不相等。
使用的符号是:<
a=[1,2,3]
b=[1,2,3]
# 判斷集合a 是不是 集合b的子集
print(set(a) <= set(b))
# 判斷 a 是不是 集合b 的真子集
print(set(a) < set(b))
所以:
如果A是B的子集,那麼A就一定是B的真子集,
如果A是B的真子集,A不一定是B的子集。
6;超集 與 真超集:
超集是一個集合中的全部元素包含了另一個集合中所有元素,有可能與另一個集合相等;
使用的符号是: >=
真超集是一個集合中的全部元素包含了另一個集合中所有元素,但不相等。
使用的符号是:>
a=[1,2,3,4]
b=[1,2,3]
# 判斷集合a 是不是 集合b的超集
print(set(a) >= set(b))
# 判斷 a 是不是 集合b 的真超集
print(set(a) > set(b))
所以:
如果A是B的超集,那麼A就一定是B的真超集,
如果A是B的超集,A不一定是B的超集。
補充内容:
更新集合的方法,注意是更新update(這個更新在字典裡也有使用)但更新 與添加add不同
來看看:
a = set('world')
# 添加一個元素到集合a裡,隻能添加一個元素
# 隻能添加不可變的序列進去,比如;字符串,數字,元組,
a.add('nihao')
# ('哈喽,明天') 是元組
a.add(('哈喽','明天'))
print(a)
以add方式添加進去的元素,會保留原有的屬性,字符串還是字符串,元組還是元組
以update方式添加到集合裡的就完全不一樣了;
1;添加進集合裡,原來的元素屬性不會發生變化,但會被一一拆開來
2;更新可以把列表更新進去。
a = set('chenglu')
# 把集合a更新一下
a.update([1,2,3,4,5],'二狗',(9,0,7,0))
print(a)
我這樣寫的目的就是讓大家能分辨出在什麼時候,使用什麼方法。
關于哈希值;
我們知道:
數值,字符串,元組是不可變的,
字典,列表,集合是可變的。
那到底是怎麼區分的呢?咱們可以用到hash來看看他們的值
a='jintiantianqibucuo'
b= 2022
c= (1,2,3,4)
# 所以 字符串,數,和元組 都有嘻哈值。
# 有嘻哈值的都是不可變的,
# 不可變的可以作為字典的鍵
print(hash(a),hash(b),hash(c))
a1={'春天':100,'夏天':200}
print(hash(a1))
b1=[1,2,3,4]
print(hash(b1))
c1={1,3,4,5}
print(hash(c1))
不可變的都有嘻哈值,可變的都沒有嘻哈值
編寫不易,如果你覺得文章内容有趣,或對你有幫助,還請點贊,評論,轉發啦~謝謝~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!