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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonset是什么类型的游戏_Python集合(set)类型的操作

發布時間:2023/12/2 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonset是什么类型的游戏_Python集合(set)类型的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文詳見:http://blog.csdn.net/business122/article/details/7541486

python的set和其他語言類似,?是一個無序不重復元素集,?基本功能包括關系測試和消除重復元素.?集合對象還支持union(聯合),?intersection(交),?difference(差)和sysmmetric?difference(對稱差集)等數學運算.

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

下面來點簡單的小例子說明把。

>>>?x?=?set('spam')

>>>?y?=?set(['h','a','m'])

>>>?x,?y

(set(['a',?'p',?'s',?'m']),?set(['a',?'h',?'m']))

再來些小應用。

>>>?x?&?y?#?交集

set(['a',?'m'])

>>>?x?|?y?#?并集

set(['a',?'p',?'s',?'h',?'m'])

>>>?x?-?y?#?差集

set(['p',?'s'])

記得以前個網友提問怎么去除海量列表里重復元素,用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 集合

集合用于包含一組無序的對象。要創建集合,可使用set()函數并像下面這樣提供一系列的項:

s?=?set([3,5,9,10])??????#創建一個數值集合

t?=?set("Hello")?????????#創建一個唯一字符的集合

與列表和元組不同,集合是無序的,也無法通過數字進行索引。此外,集合中的元素不能重復。例如,如果檢查前面代碼中t集合的值,結果會是:

>>>?t

set(['H',?'e',?'l',?'o'])

注意只出現了一個'l'。

集合支持一系列標準操作,包括并集、交集、差集和對稱差集,例如:

a?=?t?|?s??????????#?t?和?s的并集

b?=?t?&?s??????????#?t?和?s的交集

c?=?t?–?s??????????#?求差集(項在t中,但不在s中)

d?=?t?^?s??????????#?對稱差集(項在t或s中,但不會同時出現在二者中)

基本操作:

t.add('x')????????????#?添加一項

s.update([10,37,42])??#?在s中添加多項

使用remove()可以刪除一項:

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?中不重復的元素

s.copy()

返回?set?“s”的一個淺復制

請注意:union(),?intersection(),?difference()?和?symmetric_difference()?的非運算符(non-operator,就是形如?s.union()這樣的)版本將會接受任何?iterable?作為參數。相反,它們的運算符版本(operator?based?counterparts)要求參數必須是?sets。這樣可以避免潛在的錯誤,如:為了更可讀而使用?set('abc')?&?'cbs'?來替代?set('abc').intersection('cbs')。從?2.3.1?版本中做的更改:以前所有參數都必須是?sets。

另外,Set?和?ImmutableSet?兩者都支持?set?與?set?之間的比較。兩個?sets?在也只有在這種情況下是相等的:每一個?set?中的元素都是另一個中的元素(二者互為subset)。一個?set?比另一個?set?小,只有在第一個?set?是第二個?set?的?subset?時(是一個?subset,但是并不相等)。一個?set?比另一個?set?打,只有在第一個?set?是第二個?set?的?superset?時(是一個?superset,但是并不相等)。

子?set?和相等比較并不產生完整的排序功能。例如:任意兩個?sets?都不相等也不互為子?set,因此以下的運算都會返回?False:ab。因此,sets?不提供?__cmp__?方法。

因為?sets?只定義了部分排序功能(subset?關系),list.sort()?方法的輸出對于?sets?的列表沒有定義。

運算符

運算結果

hash(s)

返回?s?的?hash?值

下面這個表列出了對于?Set?可用二對于?ImmutableSet?不可用的運算:

運算符(voperator)

等價于

運算結果

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,?如果不存在則引發?KeyError

s.discard(x)

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

s.pop()

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

s.clear()

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

請注意:非運算符版本的?update(),?intersection_update(),?difference_update()和symmetric_difference_update()將會接受任意?iterable?作為參數。從?2.3.1?版本做的更改:以前所有參數都必須是?sets。

還請注意:這個模塊還包含一個?union_update()?方法,它是?update()?方法的一個別名。包含這個方法是為了向后兼容。程序員們應該多使用?update()?方法,因為這個方法也被內置的?set()?和?frozenset()?類型支持。

總結

以上是生活随笔為你收集整理的pythonset是什么类型的游戏_Python集合(set)类型的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。