python 集合
在數學上,一組是不以任何特定順序的項目的集合。python集合與此數學定義類似,但有以下附加條件。
- 該集合中的元素不能重復。
- 該集合中的元素是不可變的(不能被修改),但集合作為一個整體是可變的。
- 沒有索引附加到python集合中的任何元素。所以他們不支持任何索引或切片操作。
設置操作
python中的集合通常用于像union,intersection,difference和complement等數學運算。我們可以創建一個集合,訪問它的元素并執行這些數學運算,如下所示。
創建一個集合
通過使用set()函數或將所有元素放置在一對大括號內創建一個集合。
days=set(["mon","tue","wed","thu","fri","sat","sun"]) months={"jan","feb","mar"} dates={21,22,17} print(days) print(months) print(dates)
當上面的代碼執行時,它會產生以下結果。請注意結果中元素的順序如何變化。
set(['wed', 'sun', 'fri', 'tue', 'mon', 'thu', 'sat']) set(['jan', 'mar', 'feb']) set([17, 21, 22])
訪問集合中的值
我們無法訪問集合中的單個值。我們只能如上所示訪問所有元素。但是我們也可以通過遍歷該集合來獲取單個元素的列表。
days=set(["mon","tue","wed","thu","fri","sat","sun"]) for d in days: print(d)
當上面的代碼執行時,它會產生以下結果。
wed sun fri tue mon thu sat
將項目添加到集合
我們可以使用add()方法將元素添加到集合中。再次討論,沒有特定的索引附加到新添加的元素。
days=set(["mon","tue","wed","thu","fri","sat"]) days.add("sun") print(days)
當上面的代碼執行時,它會產生以下結果。
set(['wed', 'sun', 'fri', 'tue', 'mon', 'thu', 'sat'])
從集合中刪除項目
我們可以使用discard()方法從集合中刪除元素。再次討論,沒有特定的索引附加到新添加的元素。
days=set(["mon","tue","wed","thu","fri","sat"]) days.discard("sun") print(days)
當上面的代碼執行時,它會產生以下結果。
set(['wed', 'fri', 'tue', 'mon', 'thu', 'sat'])
集合
兩個集合上的聯合操作產生一個包含來自兩個集合的所有不同元素的新集合。在下面的例子中,元素“wed”出現在兩個集合中。
daysa = set(["mon","tue","wed"]) daysb = set(["wed","thu","fri","sat","sun"]) alldays = daysa|daysb print(alldays)
當上面的代碼執行時,它會產生以下結果。請注意,結果只有一個“結婚”。
set(['wed', 'fri', 'tue', 'mon', 'thu', 'sat'])
集合的交集
兩個集合上的交集操作產生一個新的集合,其中只包含來自兩個集合的共同元素。在下面的例子中,元素“wed”出現在兩個集合中。
daysa = set(["mon","tue","wed"]) daysb = set(["wed","thu","fri","sat","sun"]) alldays = daysa & daysb print(alldays)
當上面的代碼執行時,它會產生以下結果。請注意,結果只有一個“結婚”。
set(['wed'])
集合的差異
對兩組進行差異化操作會產生一個新的集合,其中只包含來自第一集合的元素,而不包含第二集合中的元素。在下面的例子中,元素“wed”出現在兩個集合中,所以它不會在結果集中找到。
daysa = set(["mon","tue","wed"]) daysb = set(["wed","thu","fri","sat","sun"]) alldays = daysa - daysb print(alldays)
當上面的代碼執行時,它會產生以下結果。請注意,結果只有一個“結婚”。
set(['mon', 'tue'])
比較集合
我們可以檢查一個給定的集合是否是另一個集合的子集或超集。結果是true或false,取決于組中存在的元素。
daysa = set(["mon","tue","wed"]) daysb = set(["mon","tue","wed","thu","fri","sat","sun"]) subsetres = daysa <= daysb supersetres = daysb >= daysa print(subsetres) print(supersetres)
當上面的代碼執行時,它會產生以下結果。
true true