Python 3.6 學習--基礎6:數據結構--del聲明,元組和序列,集合,字典

來源:https://docs.python.org/3.6/tutorial/datastructures.html#the-del-statement

1.del聲明

有一種方法可以從列表中刪除一個項目,而不是它的值:del語句。這與pop()返回值的方法不同。該del語句還可用於從列表中刪除切片或清除整個列表(我們之前通過將空列表分配給切片來執行此操作)。例如:

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]

del 也可以用來刪除整個變量:

>>> del a

 

2.元組和序列

我們看到列表和字符串有許多常見屬性,例如索引和切片操作。它們是序列數據類型的兩個示例(請參閱 序列類型 - 列表,元組,範圍)。由於Python是一種不斷髮展的語言,因此可能會添加其他序列數據類型。還有另一種標準序列數據類型: 元組

元組由逗號分隔的多個值組成,例如:

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> # Tuples are immutable:
... t[0] = 88888
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> # but they can contain mutable objects:
... v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])

如您所見,輸出元組始終用括號括起來,以便正確解釋嵌套元組; 它們可以輸入有或沒有周圍的括號,儘管通常括號是必要的(如果元組是較大表達式的一部分)。無法分配元組的各個項,但是可以創建包含可變對象的元組,例如列表。

儘管元組看起來與列表類似,但它們通常用於不同的情況並用於不同的目的。元組是不可變的,並且通常包含異構的元素序列,這些元素可以通過解包(參見本節後面部分)或索引(或者甚至是屬性的情況下namedtuples)來訪問。列表是可變的,它們的元素通常是同類的,可以通過遍歷列表來訪問。

一個特殊的問題是構造包含0或1項的元組:語法有一些額外的怪癖來適應這些。空元組是由一對空括號構成的; 通過使用逗號跟隨值來構造具有一個項目的元組(在括號中包含單個值是不夠的)。醜陋但有效。例如:

>>> empty = ()
>>> singleton = 'hello',    # <-- note trailing comma
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)

 該語句是元組打包的一個例子:值,並在元組中打包在一起。反向操作也是可能的:t = 12345, 54321,'hello!'1234554321'hello!'

>>> x, y, z = t

 這足夠恰當地稱爲序列解包,適用於右側的任何序列。序列解包需要在等號左側有儘可能多的變量,因爲序列中有元素。請注意,多重賦值實際上只是元組打包和序列解包的組合。

3.集合

Python還包括集合的數據類型。集合是無序集合,沒有重複元素。基本用途包括成員資格測試和消除重複條目。集合對象還支持數學運算,如並集,交集,差異和對稱差異。

大括號或set()函數可用於創建集合。注意:要創建一個空集,你必須使用set(),而不是{}; 後者創建一個空字典

這是一個簡短的演示:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # show that duplicates have been removed
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # fast membership testing
True
>>> 'crabgrass' in basket
False

>>> # Demonstrate set operations on unique letters from two words
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # unique letters in a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # letters in a but not in b
{'r', 'd', 'b'}
>>> a | b                              # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # letters in both a and b
{'a', 'c'}
>>> a ^ b                              # letters in a or b but not both
{'r', 'd', 'b', 'm', 'z', 'l'}

 與列表推導類似,也支持集合理解:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

 

4.字典

Python內置的另一個有用的數據類型是字典。詞典有時在其他語言中被稱爲“關聯記憶”或“關聯陣列”。與通過一系列數字索引的序列不同,字典由索引,可以是任何不可變類型; 字符串和數字總是鍵。如果元組僅包含字符串,數字或元組,則它們可用作鍵; 如果元組直接或間接包含任何可變對象,則不能將其用作鍵。你不能用鏈表做關鍵字,因爲鏈表可以用索引賦值,切片賦值,或類似的方法進行修改append()extend()

最好將字典視爲一組無序的鍵:值對,並要求鍵是唯一的(在一個字典中)。一對大括號創建一個空字典:{}。在括號內放置以逗號分隔的鍵:值對列表,將初始鍵:值對添加到字典中; 這也是字典在輸出上的寫法。

字典上的主要操作是使用某個鍵存儲值並提取給定鍵的值。也可以刪除鍵:值對del。如果使用已在使用的密鑰進行存儲,則會忘記與該密鑰關聯的舊值。使用不存在的密鑰提取值是錯誤的。

list(d.keys())對字典執行會以任意順序返回字典中使用的所有鍵的列表(如果您希望對其進行排序,則只需使用它 sorted(d.keys()))。要檢查單個鍵是否在字典中,請使用in關鍵字。

這是一個使用字典的小例子:

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

 的dict()構造直接從鍵-值對的序列構建字典:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

 此外,dict comprehensions可用於從任意鍵和值表達式創建字典:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

 當鍵是簡單字符串時,有時使用關鍵字參數指定對更容易:

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章