真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

python--集合概念和實戰(zhàn)

集合(set)特點

有的可變,有的不可變;元素?zé)o次序,不可重復(fù)。

成都創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作、成都網(wǎng)站建設(shè),集網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文平臺等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計,讓網(wǎng)站在運行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。

創(chuàng)建集合(set)

說明??:

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

使用set創(chuàng)建集合

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

使用 {} 創(chuàng)建集合

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

說明??:

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

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

>>> s3 = {"datagrand",[1,2,'b'],{"name":"python","lang":"chinese"},123}
Traceback (most recent call last):
  File "", line 1, in 
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(不可哈希)?

簡單理解就是,某數(shù)據(jù)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 "", line 1, in 
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'])

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

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

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

>>> set2.add('[1,2,3]') # 這里的 '[1,2,3]' 就相當(dāng)于字符串了
>>> 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. # 這個方法的作用是用原有的集合自身和其他的什么東西構(gòu)成的新集合更新原來的集合。
(END)

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

>>> 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 "", line 1, in 
TypeError: pop() takes no arguments (1 given) # pop() 不能有參數(shù)的

說明??:

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

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 "", line 1, in 
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([])

寫在最后的話

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

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

我當(dāng)時買時書籍樣紙如下:

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


分享題目:python--集合概念和實戰(zhàn)(一)
轉(zhuǎn)載源于:http://weahome.cn/article/pjgspi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部