python 集合
在數(shù)學(xué)上,一組是不以任何特定順序的項目的集合。python集合與此數(shù)學(xué)定義類似,但有以下附加條件。
- 該集合中的元素不能重復(fù)。
- 該集合中的元素是不可變的(不能被修改),但集合作為一個整體是可變的。
- 沒有索引附加到python集合中的任何元素。所以他們不支持任何索引或切片操作。
設(shè)置操作
python中的集合通常用于像union,intersection,difference和complement等數(shù)學(xué)運(yùn)算。我們可以創(chuàng)建一個集合,訪問它的元素并執(zhí)行這些數(shù)學(xué)運(yùn)算,如下所示。
創(chuàng)建一個集合
通過使用set()函數(shù)或?qū)⑺性胤胖迷谝粚Υ罄ㄌ杻?nèi)創(chuàng)建一個集合。
days=set(["mon","tue","wed","thu","fri","sat","sun"]) months={"jan","feb","mar"} dates={21,22,17} print(days) print(months) print(dates)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。請注意結(jié)果中元素的順序如何變化。
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)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。
wed sun fri tue mon thu sat
將項目添加到集合
我們可以使用add()方法將元素添加到集合中。再次討論,沒有特定的索引附加到新添加的元素。
days=set(["mon","tue","wed","thu","fri","sat"]) days.add("sun") print(days)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。
set(['wed', 'sun', 'fri', 'tue', 'mon', 'thu', 'sat'])
從集合中刪除項目
我們可以使用discard()方法從集合中刪除元素。再次討論,沒有特定的索引附加到新添加的元素。
days=set(["mon","tue","wed","thu","fri","sat"]) days.discard("sun") print(days)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。
set(['wed', 'fri', 'tue', 'mon', 'thu', 'sat'])
集合
兩個集合上的聯(lián)合操作產(chǎn)生一個包含來自兩個集合的所有不同元素的新集合。在下面的例子中,元素“wed”出現(xiàn)在兩個集合中。
daysa = set(["mon","tue","wed"]) daysb = set(["wed","thu","fri","sat","sun"]) alldays = daysa|daysb print(alldays)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。請注意,結(jié)果只有一個“結(jié)婚”。
set(['wed', 'fri', 'tue', 'mon', 'thu', 'sat'])
集合的交集
兩個集合上的交集操作產(chǎn)生一個新的集合,其中只包含來自兩個集合的共同元素。在下面的例子中,元素“wed”出現(xiàn)在兩個集合中。
daysa = set(["mon","tue","wed"]) daysb = set(["wed","thu","fri","sat","sun"]) alldays = daysa & daysb print(alldays)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。請注意,結(jié)果只有一個“結(jié)婚”。
set(['wed'])
集合的差異
對兩組進(jìn)行差異化操作會產(chǎn)生一個新的集合,其中只包含來自第一集合的元素,而不包含第二集合中的元素。在下面的例子中,元素“wed”出現(xiàn)在兩個集合中,所以它不會在結(jié)果集中找到。
daysa = set(["mon","tue","wed"]) daysb = set(["wed","thu","fri","sat","sun"]) alldays = daysa - daysb print(alldays)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。請注意,結(jié)果只有一個“結(jié)婚”。
set(['mon', 'tue'])
比較集合
我們可以檢查一個給定的集合是否是另一個集合的子集或超集。結(jié)果是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)
當(dāng)上面的代碼執(zhí)行時,它會產(chǎn)生以下結(jié)果。
true true