python 專題十五 集合

2021-06-19 07:22:15 字數 2998 閱讀 7778

集合 (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...