1. 程式人生 > >[Python入門及進階筆記]Python-基礎-集合小結

[Python入門及進階筆記]Python-基礎-集合小結

<style> <!-- h1, h2, h3, h4, h5, h6, p, blockquote {margin:0; padding:0} body {font-family:"Helvetica Neue",Helvetica,"Hiragino Sans GB",Arial,sans-serif; font-size:13px; line-height:18px; color:#737373; background-color:white; margin:10px 13px 10px 13px} table {margin:10px 0 15px 0; border-collapse:collapse} td, th {border:1px solid #ddd; padding:3px 10px} th {padding:5px 10px} a {color:#0069d6} a:hover {color:#0050a3; text-decoration:none} a img {border:none} p {margin-bottom:9px} h1, h2, h3, h4, h5, h6 {color:#404040; line-height:36px} h1 {margin-bottom:18px; font-size:30px} h2 {font-size:24px} h3 {font-size:18px} h4 {font-size:16px} h5 {font-size:14px} h6 {font-size:13px} hr {margin:0 0 19px; border:0; border-bottom:1px solid #ccc} blockquote {padding:13px 13px 21px 15px; margin-bottom:18px; font-family:georgia,serif; font-style:italic} blockquote:before {content:"\201C"; font-size:40px; margin-left:-10px; font-family:georgia,serif; color:#eee} blockquote p {font-size:14px; font-weight:300; line-height:18px; margin-bottom:0; font-style:italic} code, pre {font-family:Monaco,Andale Mono,Courier New,monospace} pre {display:block; padding:14px; margin:0 0 18px; line-height:16px; font-size:11px; border:1px solid #d9d9d9; white-space:pre-wrap; word-wrap:break-word} pre code {background-color:#fff; color:#737373; font-size:11px; padding:0} --> </style>

部落格遷往:新地址(點選直達)

新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗

csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉


----------------------

集合

簡介

python的set和其他語言類似, 是一個無序不重複元素集, 基本功能包括關係測試和消除重複元素.

sets 支援 x in set, len(set), 和 for x in set。

集合物件還支援union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算.

作為一個無序的集合,sets 不記錄元素位置或者插入點。因此,sets 不支援 indexing, slicing, 或其它類序列(sequence-like)的操作。

set為可變集合

frozenset為固定集合

可變集合特有的方法: add, remove, discard, pop, clear, 這些接受物件的方法, 引數必須是可雜湊的

宣告

用集合的工廠方法 set()和 frozenset():

set

>>> s = set('cheeseshop')  
>>> s  
set(['c', 'e', 'h', 'o', 'p', 's']) 

frozenset

>>> b = frozenset([1,2,3,2])
>>> b
frozenset([1, 2, 3])
>>> b.add(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'

Set 和 ImmutableSet

字串->字符集

>>> set('hello')
set(['h', 'e', 'l', 'o'])

列表/元組->集合

>>> set([1,2,3,2,1])
set([1, 2, 3])
>>> set((1,2,3,2,1))
set([1, 2, 3])

甚至是 字典->集合

>>> a = {'name':'tom','age':22,'score':22}
>>> set(a)
set(['age', 'score', 'name'])

常用操作

成員關係

>>> h = set('hello')
>>> h
set(['h', 'e', 'l', 'o'])
>>> 'l' in h
True
>>> 'l' not in h
False

新增刪除

新增單個元素s.add(x)

向 set “s”中增加元素 x

>>> a = set([1,2,3,4,2])
>>> a
set([1, 2, 3, 4])
>>> a.add(2)
>>> a
set([1, 2, 3, 4])
>>> a.add(5)
>>> a
set([1, 2, 3, 4, 5])

新增多個元素

s.update(t)

s |= t

>>> a = set([1,2,3])
>>> b = set([2,3,4])
>>> a.update(b)
>>> a
set([1, 2, 3, 4])
>>> b
set([2, 3, 4])

刪除

s.remove(x)

從 set “s”中刪除元素 x, 如果不存在則引發 KeyError

>>> a
set([1, 2, 3, 4, 5])
>>> a.remove(4)
>>> a
set([1, 2, 3, 5])
>>> a.remove(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 4

s.discard(x)

如果在 set “s”中存在元素 x, 則刪除

>>> a
set([1, 2, 3, 5])
>>> a.discard(3)
>>> a
set([1, 2, 5])
>>> a.discard(3)
>>> a
set([1, 2, 5])

s.pop()

刪除並且返回 set “s”中的一個不確定的元素, 如果為空則引發 KeyError

>>> a
set([1, 5])
>>> a.pop()
1
>>> a.pop()
5
>>> a.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'

s.clear()

刪除 set “s”中的所有元素

>>> a
set([1, 2, 3, 4])
>>> a.clear()
>>> a
set([])

>>> b = set([1,2,3])
>>> del b

集合間操作

注意,集合操作可以通過函式進行,也存在等價的運算子

1.交集

s.union(t) 等價 s | t

返回一個新的 set 包含 s 和 t 中的每一個元素

2.並集

s.intersection(t) 等價 s & t

返回一個新的 set 包含 s 和 t 中的公共元素

3.差集

s.difference(t) 等價 s - t

返回一個新的 set 包含 s 中有但是 t 中沒有的元素

4.差分集

s.symmetric_difference(t) 等價 s ^ t

返回一個新的 set 包含 s 和 t 中不重複的元素

>>> a = set([1,2,3])
>>> b = set([2,3,4])
>>> a.symmetric_difference(b)
set([1, 4])

5.關係判斷

s.issubset(t) 等價 s <= t

測試是否 s 中的每一個元素都在 t 中

s.issuperset(t) 等價 s >= t

測試是否 t 中的每一個元素都在 s 中

6.淺拷貝

>>> a
set([1, 2, 3])
>>> b = a.copy()
>>> b
set([1, 2, 3])

其他

1.用的較少的函式

s.intersection_update(t) 等價 s &= t

返回只保留含有 set “t”中元素的 set “s”

s.difference_update(t) 等價 s -= t

返回刪除了 set “t”中含有的元素後的 set “s”

s.symmetric_difference_update(t) 等價 s ^= t

返回含有 set “t”或者 set “s”中有而不是兩者都有的元素的 set “s”

The end!

To be continue

wklken

Email: [email protected]

Blog: http://blog.csdn.net/wklken

2013-03-10

轉載請註明出處,謝謝

相關推薦

[Python入門筆記]Python-基礎-字串小結

部落格遷往:新地址 (點選直達) 新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗 csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉 ------------------------ 字串 簡

[Python入門筆記]Python-基礎-集合小結

<style> <!-- h1, h2, h3, h4, h5, h6, p, blockquote {margin:0; padding:0} body {font-family:"Helvet

[Python入門筆記]Python-基礎-數字小結

<style> <!-- h1, h2, h3, h4, h5, h6, p, blockquote {margin:0; padding:0} body {font-family:"Helvet

[Python入門筆記]Python-基礎-函式小結

部落格遷往:新地址 (點選直達) 新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗 csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉 ----------------- 函式 簡介及定義 簡介

[Python入門筆記]Python-基礎-字典小結

部落格遷往:新地址(點選直達) 新部落格使用markdown維護,線下有版本庫,自己寫的所以會定時更新同步,同時提供更好的導航和閱讀體驗 csdn對markdown支援不好,所以舊版不會花時間進行同步修訂,抱歉 ----------------------- 字典 定義

[Python入門筆記00]-寫在前面(目錄/書籍/學習路線/其他)

最新系列在 入口 =============================================    學習Python有一段時間了,需要來一個階段性總結了     個人看書的模式是,一邊看書,一邊敲程式碼,一遍記筆記(record for search

標號(11):python(就業階段)——javascript入門

<1>javascript介紹 1、JavaScript是執行在瀏覽器端的指令碼語言 2、JavaScript主要解決的是前端與使用者互動的問題,包括使用互動與資料互動,JavaScript是瀏覽器解釋執行的。 3、瀏覽器彈窗 <script> alert(

python前端JavaScript入門

知識點預習 1、js基本使用2、js變數定義及型別 3、js函式定義及預解析 4、js獲取標籤 5、js讀寫標籤屬性 00-JavaScript簡介 JavaScript是執行在瀏覽器端的腳步語言,JavaScript主要解決的是前端與使用者互動的問題,包括使用互動與資料互動。 JavaScri

python入門篇(六)之高階語法用法

    高階知識針對包、類庫的開發者,函式只是一段可執行的程式碼 並不是物件,閉包、函數語言程式設計 閉包=函式+環境變數 a=10 def outer(): a=25 def inner(x): print(a*x*x) retu

限時領取 | 人工智慧入門必讀Python書籍PDF!

Python是一門簡單易學,功能強大的程式語言。它具有高效的高階資料結構和簡單而有效的面向物件程式設計方法。Python優雅的語法和動態型別以及其解釋性的性質,使它在許多領域和大多數平臺成為編寫指令碼和快速應用程式開發的理想語言。今天小編就給大家推薦3本Python相關的書籍。(想獲取本書電子版可以

python入門篇(二)之變數和運算子

變數 變數的命名規則:    字母、數字、下劃線組成,   系統關鍵字不能在變數名中 如and、if、import   變數名區分大小寫   變數沒有型別限制 同js   系統方法名建議不用來做變數名,避免造成衝突 如type print   Int str t

python入門篇(四)之包、模組、函式與變數作用域

python專案的組織結構 包(資料夾)-->模組(檔案)-->類-->函式和變數   seven.c4、six.c4:(seven)包名.模組名(c4) 構成名稱空間 seven包的結構: seven    --t(子包)        --

Python入門,這本書有什麼不同?

人們常說Python語言簡單,編寫簡單程式時好像也確實如此。但實際上Python絕不簡單,它也是一種很複雜的語言,其功能特徵非常豐富,能支援多種程式設計風格,在幾乎所有方面都能深度定製。要想用好Python,用它解決複雜問題,開發功能正確的、效率高的程式,需要很好地理解上面說

Python如何賺錢? python爬蟲如何python就業? 如何快速入門python? .....

1、如何快速入門 Python ? 我之前給大家說過,速成一門技能是不可能的,你需要花很多時間才能真正的掌握一門技能,但是快速入

全面解讀JavaScript入門,100%基礎知識掌握!

isnan cookies dom 事件 document 動態 情況 blue tint mat 一、JavaScript 簡介 1、JavaScript 是 Web 的編程語言,是前端開發必須掌握的三門語言之一,即: HTML 定義了網頁的內容 CSS

最新玩轉資料結構從入門 資料結構基礎

第1章 歡迎學習《玩轉資料結構》歡迎大家學習《玩轉資料結構》課程。在這個課程中,我們將從底層實現諸多資料結構,從簡單,到複雜,並且探索他們的應用。在這一章,我們將來看一看資料結構的具體作用,學習資料結構的誤區,學習這個課程的注意事項,和課程環境的基本搭建:) ...第2章 不要小瞧陣列陣列,看似是最

程式語言入門、設計模式、面向物件書籍

1. Python Python 基礎教程 Automate the Boring Stuff with Python(繁瑣工作自動化) 前六章,python 語言基礎; 其後便是一些自動化實現

System.Web.Routing入門 下篇

上面介紹的是最簡單的一種定義方式。當然我們可以建立更復雜的規則。其中就包括設定規則的預設值以及設定規則的正則表示式。 UrlRouting高階應用 預計效果: 當我訪問/a/b.aspx時就會轉到Default.aspx?category=a&action=b在頁面上顯示 cate

System.Web.Routing入門 上篇

System.Web.Routing已經作為一個程式集包含在.net3.5sp1中釋出了。雖然我們並沒有在3.5sp1中發現Asp.net Mvc的蹤跡,但是亦以感覺到它離我們不遠了。 System.Web.Routing用於在Asp.net的Web應用程式中進行URLRouting。 所謂UrlRo

Python3入門筆記(三):迴圈

表示式的優先順序:    例:        a=1        b=2        c=2        not a or b + 2 == c + 2 結果為 True,等價於 ( ( not a ) or ( b + 2 ) ) == ( c + 2 )迴圈