久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Python集合類型

2023-09-28 276

一、Python集合類型

Python集合類型包括 set 和 frozenset 兩種,set 對象是由具有唯一性的可 hashable對象組成的無序多項集。常見用途是成員檢測、去重和數(shù)學(xué)中的集合類計算,如交集、并集、差集和對稱差集等操作。與其他多項集一樣,集合也支持 x in set, len(set) 和 for x in set 操作,但不支持索引、切片或其他序列類的操作。

set 類型是可變的,它的內(nèi)容可以使用 add() 和 remove() 等方法來改變。由于是可變類型,它沒有哈希值,不能被用作字典的鍵或其他集合的元素。frozenset 類型是不可變的,其內(nèi)容在創(chuàng)建后不能改變,因此可以被用作字典的鍵或其他集合的元素

除了可以使用 set 構(gòu)造器,非空的 set 還可以通過將以逗號分隔的元素列表包含于花括號之內(nèi)來創(chuàng)建,例如: {‘jack’, ‘sjoerd’}。兩個構(gòu)造器的作用相同,都可以從可迭代對象中創(chuàng)建集合。

兩個類的構(gòu)造器具有相同的作用方式:

返回一個新的 set 或 frozenset 對象,其元素來自于 iterable。 集合的元素必須為 hashable。 要表示由集合對象構(gòu)成的集合,所有的內(nèi)層集合必須為 frozenset 對象。 如果未指定 iterable,則將返回一個新的空集合。

二、Python集合創(chuàng)建

集合可用多種方式來創(chuàng)建:

  • 使用花括號內(nèi)以逗號分隔元素的方式: {‘jack’, ‘sjoerd’}
  • 使用集合推導(dǎo)式: {c for c in ‘abracadabra’ if c not in ‘abc’}
  • 使用類型構(gòu)造器: set(), set(‘foobar’), set([‘a’, ‘b’, ‘foo’])

三、Python集合操作

set 和 frozenset 的實例提供以下操作:

  • len(s):返回集合 s 中的元素數(shù)量(即 s 的基數(shù))。
  • x in s:檢測 x 是否為 s 中的成員。
  • x not in s:檢測 x 是否非 s 中的成員。
  • isdisjoint(other):如果集合中沒有與 other 共有的元素則返回 True。 當(dāng)且僅當(dāng)兩個集合的交集為空集合時,兩者為不相交集合。
  • issubset(other) set <= other:檢測是否集合中的每個元素都在 other 之中。
  • set < other:檢測集合是否為 other 的真子集,即 set <= other and set != other。
  • issuperset(other) set >= other:檢測是否 other 中的每個元素都在集合之中。
  • set > other:檢測集合是否為 other 的真超集,即 set >= other and set != other。
  • union(*others) set | other | …:返回一個新集合,其中包含來自原集合以及 others 指定的所有集合中的元素。
  • intersection(*others) set & other & …:返回一個新集合,其中包含原集合以及 others 指定的所有集合中共有的元素。
  • difference(*others) set – other – …:返回一個新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素。
  • symmetric_difference(other) set ^ other:返回一個新集合,其中的元素或?qū)儆谠匣驅(qū)儆?other 指定的其他集合,但不能同時屬于兩者。
  • copy():返回原集合的淺拷貝。

注意: union() 、 intersection() 、 difference() 、 symmetric_difference() 、 issubset() 和 issuperset() 方法的非運算符版本可以接受任何可迭代對象作為一個參數(shù)。相比之下,基于運算符的對應(yīng)方法則要求參數(shù)為集合對象。這就避開了像 set(‘abc’) & ‘cbs’ 這樣容易出錯的結(jié)構(gòu),而換成了可讀性更好的 set(‘abc’).intersection(‘cbs’)。

set 和 frozenset 均支持集合與集合的比較。 兩個集合當(dāng)且僅當(dāng)每個集合中的每個元素均包含于另一個集合之內(nèi)(即各為對方的子集)時則相等。 一個集合當(dāng)且僅當(dāng)其為另一個集合的真子集(即為后者的子集但兩者不相等)時則小于另一個集合。 一個集合當(dāng)且僅當(dāng)其為另一個集合的真超集(即為后者的超集但兩者不相等)時則大于另一個集合。

set 的實例與 frozenset 的實例之間基于它們的成員進(jìn)行比較。 例如 set(‘abc’) == frozenset(‘abc’) 返回 True,set(‘abc’) in set([frozenset(‘abc’)]) 也一樣。子集與相等比較并不能推廣為完全排序函數(shù)。 例如,任意兩個非空且不相交的集合不相等且互不為對方的子集,因此以下 所有 比較均返回 False: a<b, a==b, or a>b。

由于集合僅定義了部分排序(子集關(guān)系),因此由集合構(gòu)成的列表 list.sort() 方法的輸出并無定義。集合的元素,與字典的鍵類似,必須為 hashable?;旌狭?set 實例與 frozenset 的二進(jìn)制位運算將返回與第一個操作數(shù)相同的類型。例如: frozenset(‘ab’) | set(‘bc’) 將返回 frozenset 的實例。

下表列出了可用于 set 而不能用于不可變的 frozenset 實例的操作:

  • update(*others) set |= other | …:更新集合,添加來自 others 中的所有元素。
  • intersection_update(*others) set &= other & …:更新集合,只保留其中在所有 others 中也存在的元素。
  • difference_update(*others) set -= other | …:更新集合,移除其中也存在于 others 中的元素。
  • symmetric_difference_update(other) set ^= other:更新集合,只保留存在于集合的一方而非共同存在的元素。
  • add(elem):將元素 elem 添加到集合中。
  • remove(elem):從集合中移除元素 elem。 如果 elem 不存在于集合中則會引發(fā) KeyError。
  • discard(elem):如果元素 elem 存在于集合中則將其移除。
  • pop():從集合中移除并返回任意一個元素。 如果集合為空則會引發(fā) KeyError。
  • clear():從集合中移除所有元素。

注意

  • 非運算符版本的 update(), intersection_update(), difference_update() 和 symmetric_difference_update() 方法將接受任意可迭代對象作為參數(shù)。
  • __contains__(), remove() 和 discard() 方法的 elem 參數(shù)可能是一個 set。 為支持對一個等價的 frozenset 進(jìn)行搜索,會根據(jù) elem 臨時創(chuàng)建一個該類型對象。
  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。
Python集合類型
上一篇: Python字典
Python集合類型
下一篇: Python循環(huán)