日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python set

發(fā)布時間:2023/12/13 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python set 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • python的set和其他語言類似,?是一個無序不重復(fù)元素集,?基本功能包括關(guān)系測試和消除重復(fù)元素.?集合對象還支持union(聯(lián)合),?intersection(交),?difference(差)和sysmmetric?difference(對稱差集)等數(shù)學(xué)運(yùn)算.??
  • ??
  • sets?支持?x?in?set,?len(set),和?for?x?in?set。作為一個無序的集合,sets不記錄元素位置或者插入點(diǎn)。因此,sets不支持?indexing,?slicing,?或其它類序列(sequence-like)的操作。??
  • ??
  • ???
  • ??
  • 下面來點(diǎn)簡單的小例子說明把。??
  • ??
  • >>>?x?=?set('spam')??
  • >>>?y?=?set(['h','a','m'])??
  • >>>?x,?y??
  • (set(['a',?'p',?'s',?'m']),?set(['a',?'h',?'m']))??
  • ??
  • 再來些小應(yīng)用。??
  • ??
  • >>>?x?&?y?#?交集??
  • set(['a',?'m'])??
  • ??
  • >>>?x?|?y?#?并集??
  • set(['a',?'p',?'s',?'h',?'m'])??
  • ??
  • >>>?x?-?y?#?差集??
  • set(['p',?'s'])??
  • ??
  • 記得以前個網(wǎng)友提問怎么去除海量列表里重復(fù)元素,用hash來解決也行,只不過感覺在性能上不是很高,用set解決還是很不錯的,示例如下:??
  • ??
  • >>>?a?=?[11,22,33,44,11,22]??
  • >>>?b?=?set(a)??
  • >>>?b??
  • set([33,?11,?44,?22])??
  • >>>?c?=?[i?for?i?in?b]??
  • >>>?c??
  • [33,?11,?44,?22]??
  • ??
  • 很酷把,幾行就可以搞定。??
  • ??
  • 1.8 集合???
  • ???
  • 集合用于包含一組無序的對象。要創(chuàng)建集合,可使用set()函數(shù)并像下面這樣提供一系列的項(xiàng):??
  • ??
  • ???
  • ??
  • s?=?set([3,5,9,10])??????#創(chuàng)建一個數(shù)值集合??
  • ??
  • t?=?set("Hello")?????????#創(chuàng)建一個唯一字符的集合??
  • ??
  • ???
  • ??
  • 與列表和元組不同,集合是無序的,也無法通過數(shù)字進(jìn)行索引。此外,集合中的元素不能重復(fù)。例如,如果檢查前面代碼中t集合的值,結(jié)果會是:??
  • ??
  • ???
  • ??
  • >>>?t??
  • ??
  • set(['H',?'e',?'l',?'o'])??
  • ??
  • ???
  • ??
  • 注意只出現(xiàn)了一個'l'。??
  • ??
  • 集合支持一系列標(biāo)準(zhǔn)操作,包括并集、交集、差集和對稱差集,例如:??
  • ??
  • ???
  • ??
  • a?=?t?|?s??????????#?t?和?s的并集??
  • ??
  • b?=?t?&?s??????????#?t?和?s的交集??
  • ??
  • c?=?t?–?s??????????#?求差集(項(xiàng)在t中,但不在s中)??
  • ??
  • d?=?t?^?s??????????#?對稱差集(項(xiàng)在t或s中,但不會同時出現(xiàn)在二者中)??
  • ??
  • ???
  • ??
  • 基本操作:??
  • ??
  • t.add('x')????????????#?添加一項(xiàng)??
  • ??
  • s.update([10,37,42])??#?在s中添加多項(xiàng)??
  • ??
  • ???
  • ??
  • 使用remove()可以刪除一項(xiàng):??
  • ??
  • t.remove('H')??
  • ??
  • ???
  • ??
  • len(s)??
  • set?的長度??
  • ??
  • x?in?s??
  • 測試?x?是否是?s?的成員??
  • ??
  • x?not?in?s??
  • 測試?x?是否不是?s?的成員??
  • ??
  • s.issubset(t)??
  • s?<=?t??
  • 測試是否?s?中的每一個元素都在?t?中??
  • ??
  • s.issuperset(t)??
  • s?>=?t??
  • 測試是否?t?中的每一個元素都在?s?中??
  • ??
  • s.union(t)??
  • s?|?t??
  • 返回一個新的?set?包含?s?和?t?中的每一個元素??
  • ??
  • s.intersection(t)??
  • s?&?t??
  • 返回一個新的?set?包含?s?和?t?中的公共元素??
  • ??
  • s.difference(t)??
  • s?-?t??
  • 返回一個新的?set?包含?s?中有但是?t?中沒有的元素??
  • ??
  • s.symmetric_difference(t)??
  • s?^?t??
  • 返回一個新的?set?包含?s?和?t?中不重復(fù)的元素??
  • ??
  • s.copy()??
  • 返回?set?“s”的一個淺復(fù)制??
  • ??
  • ??
  • 請注意:union(),?intersection(),?difference()?和?symmetric_difference()?的非運(yùn)算符(non-operator,就是形如?s.union()這樣的)版本將會接受任何?iterable?作為參數(shù)。相反,它們的運(yùn)算符版本(operator?based?counterparts)要求參數(shù)必須是?sets。這樣可以避免潛在的錯誤,如:為了更可讀而使用?set('abc')?&?'cbs'?來替代?set('abc').intersection('cbs')。從?2.3.1?版本中做的更改:以前所有參數(shù)都必須是?sets。??
  • ??
  • 另外,Set?和?ImmutableSet?兩者都支持?set?與?set?之間的比較。兩個?sets?在也只有在這種情況下是相等的:每一個?set?中的元素都是另一個中的元素(二者互為subset)。一個?set?比另一個?set?小,只有在第一個?set?是第二個?set?的?subset?時(是一個?subset,但是并不相等)。一個?set?比另一個?set?打,只有在第一個?set?是第二個?set?的?superset?時(是一個?superset,但是并不相等)。??
  • ??
  • 子?set?和相等比較并不產(chǎn)生完整的排序功能。例如:任意兩個?sets?都不相等也不互為子?set,因此以下的運(yùn)算都會返回?False:a<b,?a==b,?或者a>b。因此,sets?不提供?__cmp__?方法。??
  • ??
  • 因?yàn)?sets?只定義了部分排序功能(subset?關(guān)系),list.sort()?方法的輸出對于?sets?的列表沒有定義。??
  • ??
  • ??
  • 運(yùn)算符??
  • ???運(yùn)算結(jié)果??
  • ??
  • hash(s)??
  • ???返回?s?的?hash?值??
  • ??
  • ??
  • 下面這個表列出了對于?Set?可用二對于?ImmutableSet?不可用的運(yùn)算:??
  • ??
  • 運(yùn)算符(voperator)??
  • 等價于??
  • 運(yùn)算結(jié)果??
  • ??
  • s.update(t)??
  • s?|=?t??
  • 返回增加了?set?“t”中元素后的?set?“s”??
  • ??
  • 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”??
  • ??
  • s.add(x)??
  • ??
  • 向?set?“s”中增加元素?x??
  • ??
  • s.remove(x)??
  • ??
  • 從?set?“s”中刪除元素?x,?如果不存在則引發(fā)?KeyError??
  • ??
  • s.discard(x)??
  • ??
  • 如果在?set?“s”中存在元素?x,?則刪除??
  • ??
  • s.pop()??
  • ??
  • 刪除并且返回?set?“s”中的一個不確定的元素,?如果為空則引發(fā)?KeyError??
  • ??
  • s.clear()??
  • ??
  • 刪除?set?“s”中的所有元素??
  • ??
  • ??
  • 請注意:非運(yùn)算符版本的?update(),?intersection_update(),?difference_update()和symmetric_difference_update()將會接受任意?iterable?作為參數(shù)。從?2.3.1?版本做的更改:以前所有參數(shù)都必須是?sets。??
  • ??
  • 還請注意:這個模塊還包含一個?union_update()?方法,它是?update()?方法的一個別名。包含這個方法是為了向后兼容。程序員們應(yīng)該多使用?update()?方法,因?yàn)檫@個方法也被內(nèi)置的?set()?和?frozenset()?類型支持。
  • 轉(zhuǎn)載于:https://www.cnblogs.com/nkwy2012/p/6387179.html

    總結(jié)

    以上是生活随笔為你收集整理的python set的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。