集合 (set) 用來儲存無序不重複物件。所謂不重複物件,除了不是同一物件外,還包括 "值" 不能相
同。集合只能儲存可雜湊物件,一樣有唯讀版本 frozenset
>>> s = set("abc") # 通過序列型別初始化。
>>> s
set(['a', 'c', 'b'])
>>> # 通過構造表示式建立。
set(['a', 'c', 'b'])
>>> "b" in s # 判斷元素是否在集合中。
true
>>> s.add("d") # 新增元素
>>> s
set(['a', 'c', 'b', 'd'])
>>> s.remove("b") # 移除元素
>>> s
set(['a', 'c', 'd'])
>>> s.discard("a") # 如果存在,就移除。
>>> s
set(['c', 'd'])
>>> s.update(set("abcd")) # 合併集合
>>> s
set(['a', 'c', 'b', 'd'])
>>> s.pop() # 彈出元素
'a'>>> s
set(['c', 'b', 'd']);w
>>> "c" in set("abcd") # 判斷集合中是否有特定元素。
true
>>> set("abc") is set("abc")
false
>>> set("abc") == set("abc") # 相等判斷
true
>>> set("abc") = set("abc") # 不等判斷
false
>>> set("abcd") >= set("ab") # 超集判斷 (issuperset)
true
>>> set("bc") < set("abcd") # ⼦子集判斷 (issubset)
true
>>> set("abcd") | set("cdef") # 並集 (union)
set(['a', 'c', 'b', 'e', 'd', 'f'])
>>> set("abcd") & set("abx") # 交集 (intersection)
set(['a', 'b'])
>>> set("abcd") - set("ab") # 差集 (difference), 僅左邊有,右邊沒有的。
set(['c', 'd'])
>>> set("abx") ^ set("aby") # 對稱差集 (symmetric_difference)
set(['y', 'x']) # 不會同時出現在兩個集合當中的元素。
>>> set("abcd").isdisjoint("ab") # 判斷是否沒有交集
false
>>> s = set("abcd")
>>> s |= set("cdef") # 並集 (update)
>>> s
set(['a', 'c', 'b', 'e', 'd', 'f'])
>>> s = set("abcd")
>>> s &= set("cdef") # 交集 (intersection_update)
>>> s
set(['c', 'd'])
>>> s = set("abx")
>>> s -= set("abcdy") # 差集 (difference_update)
>>> s
set(['x'])
>>> s = set("abx")
>>> s ^= set("aby") # 對稱差集 (symmetric_difference_update)
>>> s
set(['y', 'x'])
>>> hash()
typeerror: unhashable type: 'list'
>>> hash({})
typeerror: unhashable type: 'dict'
>>> hash(set())
typeerror: unhashable type: 'set'
>>> hash(tuple()), hash(frozenset())
(3527539, 133156838395276)
如果想把自定義型別放入集合,需要保證 hash 和 equal 的結果都相同才能去
>>> class user(object):
... def __init__(self, name):
... self.name = name
>>> hash(user("tom")) # 每次的雜湊結果都不同
279218517
>>> hash(user("tom"))
279218521
>>> class user(object):
... def __init__(self, name):
... self.name = name
...... def __hash__(self):
... return hash(self.name)
...... def __eq__(self, o):
... if not o or not isinstance(o, user): return false
... return self.name == o.name
>>> s = set()
>>> s.add(user("tom"))
>>> s.add(user("tom"))
>>> s
set([<__main__.user object at 0x10a48d150>])
Swift語法專題五 集合型別
swift中提供了3種集合型別,array資料型別,set集合型別,dictionary字典型別。array用於存放一組有序的資料,資料角標從0開始一次遞增 set用於存放一組無序的資料,資料不可以重複 dictionary也用於存放一組無序的資料,只是其是按照鍵值對的方式儲存,鍵值必須唯一。這裡借...
SpringBoot 十五 整合Druid
druid是阿里巴巴開源平台上乙個資料庫連線池實現,它結合了c3p0 dbcp proxool等db池的優點,同時加入了日誌監控,可以很好的監控db池連線和sql的執 況,可以說是針對監控而生的db連線池 據說是目前最好的連線池 今天主要講在springboot2.0中整合druid。druid連線...
Mybatis系列十五 整合Redis
在springboot專案中用redis做mybatis的二級快取。1 新增redis依賴 org.springframework.boot spring boot starter data redis spring redis database 0 host 10.18.28.225 port 6...