亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python--集合概念和實戰(一)

發布時間:2020-08-06 00:09:03 來源:網絡 閱讀:815 作者:品鑒初心 欄目:編程語言

python--集合概念和實戰

集合(set)特點

有的可變,有的不可變;元素無次序,不可重復。

創建集合(set)

說明??:

元組算是列表和字符串的某些特征的雜合,那么集合則可以算是列表和字典的某些特征雜合。

使用set創建集合

>>> s = set("wtf")
>>> s
set(['t', 'w', 'f'])
把字符串中的字符拆解開,形成集合。
>>> s1 = set("zhaodidi")
>>> s1
set(['a', 'd', 'i', 'h', 'o', 'z'])
”haodidi“中有兩個“d”和“i”,創建集合時,如發現重復元素,就會過濾掉。

使用 {} 創建集合

>>> s2 = {"python",123}
>>> s2
set(['python', 123])

說明??:

  • 這種方法不提倡,因為 {} 常常被用于字典上,應避免歧義!
  • 特別說明,建立空集合時一定要使用 set() ,不要使用 {} !否則建立的就是字典而非集合。

下面是實例說明為什么創建集合不提倡使用 {}

>>> s3 = {"datagrand",[1,2,'b'],{"name":"python","lang":"chinese"},123}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'

>>> s4 = set("'datagrand',[1,2,'b'],{'name':'python','lang':'chinese'},123")
>>> s4
set(["'", ',', '1', '3', '2', ':', '[', ']', 'a', 'c', 'b', 'e', 'd', 'g', 'i', 'h', 'm', 'l', 'o', 'n', 'p', 's', 'r', 't', 'y', '{', '}'])

說明??:使用 set() 建立起來的集合是可變集合,可變集合都是unhashable type。但是集合中的元素是 hashable type !

什么是 hashable(可哈希)和 unhashable(不可哈希)?

簡單理解就是,某數據unhashable(不可哈希)就是其可變,如list或dict。否則,就是hashable(可哈希),如字符串。

集合沒有索引(index)

>>> dir(set)
['__and__', '__class__', '__cmp__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
上面列出的并沒有“index”
>>> s1
set(['a', 'd', 'i', 'h', 'o', 'z'])
>>> s1[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
報錯中明確告知,集合不支持索引!

集合(set)方法

add (增加的是元素)

>>> help(set.add)
Help on method_descriptor:

add(...)
    Add an element to a set.

    This has no effect if the element is already present.
(END)

實例說明如下:

>>> set1 = set()
>>> set1
set([])
>>> set1.add("zhaodi")   #屬于原地修改
>>> set1
set(['zhaodi'])
>>> set2 = set("python")
>>> set2
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> set2.add("learning")
>>> set2
set(['h', 'o', 'n', 'p', 't', 'learning', 'y'])

這里重申下:“集合中的元素應該是 hashable 類型”

set2
set(['h', 'o', 'n', 'p', 't', 'learning', 'y'])
>>> set2.add([1,2,3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

如果將列表 [1,2,3] 變成 hashable 類型呢?

>>> set2.add('[1,2,3]') # 這里的 '[1,2,3]' 就相當于字符串了
>>> set2
set(['[1,2,3]', 'h', 'o', 'n', 'p', 't', 'learning', 'y']) 

update(合并集合)

>>> help(set.update)
Help on method_descriptor:

update(...)
    Update a set with the union of itself and others. # 這個方法的作用是用原有的集合自身和其他的什么東西構成的新集合更新原來的集合。
(END)

others是指作為參數的不可變對象,將它和原來的集合組成新的集合,用這個新集合替代原來的集合,如下:

>>> set1
set(['zhaodi'])
>>> set1.update("wutf")
>>> set1
set(['f', 'u', 'zhaodi', 'w', 't'])
>>> set1.update((3,4))
>>> set1
set([3, 4, 'f', 'u', 't', 'w', 'zhaodi'])

合并集合,舉例如下:

>>> set1
set(['zhaodi'])
>>> set2
set(['[1,2,3]', 'h', 'o', 'n', 'p', 't', 'learning', 'y'])
>>> set2.update(set1) # 把 set1 的元素并入到 set2 中
>>> set2
set(['[1,2,3]', 'h', 'o', 'n', 'p', 't', 'learning', 'y', 'zhaodi'])
>>> set1 # set1 并沒有改變
set(['zhaodi'])

pop(刪除集合中任意元素)

>>> help(set.pop)
Help on method_descriptor:

pop(...)
    Remove and return an arbitrary(隨意) set element.
    Raises KeyError if the set is empty.
(END)
pop 刪除任意一個集合元素
>>> set1
set([3, 4, 'f', 'u', 't', 'w', 'zhaodi'])
>>> set1.pop()
3
>>> set1.pop()
4
>>> set1.pop()
'f'
>>> set1
set(['u', 't', 'w', 'zhaodi'])
pop 刪除指定元素 (不能的)
>>> set1
set(['u', 't', 'w', 'zhaodi'])
>>> set1.pop('zhaodi')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop() takes no arguments (1 given) # pop() 不能有參數的

說明??:

  • set.pop() 是從set中任意選一個元素,刪除并將這個值返回
  • pop() 不能有參數,所以 pop 不能指定刪除集合中某個元素
  • 如果集合已經為空,再刪除,也報錯

remove(刪除集合中指定元素,有報錯信息)

>>> help(set.remove)
Help on method_descriptor:

remove(...)
    Remove an element from a set; it must be a member.

    If the element is not a member, raise a KeyError.
(END)

說明??:set.remove(obj) 中的 obj 必須是 set 中的元素,否則就報錯。實例如下:

>>> set1
set(['u', 't', 'w', 'zhaodi'])
>>> set1.remove("wtf") # 沒有 “wtf” 這個元素
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'wtf'
>>> set1.remove("w")
>>> set1
set(['u', 't', 'zhaodi'])

discard(刪除集合中指定元素,無報錯信息)

>>> help(set.discard)

Help on method_descriptor:

discard(...)
    Remove an element from a set if it is a member.

    If the element is not a member, do nothing.
(END)

說明??:

  • 與 set.remove 功能相似
  • discard(obj) 中的 obj 如果是集合中的元素,就刪除;如果不是,就什么都不做(do nothing)
>>> set1
set(['u', 't', 'zhaodi'])
>>> set1.discard("u")
>>> set1.discard("wtf")
>>> set1
set(['t', 'zhaodi'])

clear (刪除集合中的所有元素)

>>> help(set.clear)

Help on method_descriptor:

clear(...)
    Remove all elements from this set.
(END)

實例如下:

>>> set1
set(['t', 'zhaodi'])
>>> set1.clear()
>>> set1
set([])

寫在最后的話

這篇博文是參考老齊老師的大作《跟老齊學python》進行簡單總結的,這里沒有打廣告的意思,只是感覺老齊老師的書很適合python小白學習,內容讀起來很輕快,老齊老師的書籍邏輯很清晰,有需要的朋友可以看看~~

gitbook版本:《跟老齊學Python》(入門教程)

我當時買時書籍樣紙如下:

python--集合概念和實戰(一)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德化县| 鲜城| 潜山县| 肥东县| 成都市| 昂仁县| 海兴县| 朔州市| 辽宁省| 福安市| 宣城市| 通辽市| 四会市| 衡阳县| 平乡县| 金堂县| 呼和浩特市| 黄陵县| 黄浦区| 安顺市| 平利县| 大安市| 阳曲县| 普格县| 洛南县| 雅安市| 拉孜县| 桐梓县| 来凤县| 东港市| 翁牛特旗| 青神县| 博乐市| 永年县| 嘉义市| 达日县| 梅州市| 巫溪县| 漠河县| 贞丰县| 馆陶县|