python的三種數據結構

python中常用的三種數據結構分別是list,tuple,dict。

①list看起來跟C語言的數組類似,不過它的元素可以是字符串、list、tuple以及dict,也就是可以混合嵌套。通過list下標能夠訪問任何元素。

>>> s = ["abc", ["s", "b"], (1, 2, 3), {"key": "red"}]
>>> s
['abc', ['s', 'b'], (1, 2, 3), {'key': 'red'}]
>>> s[1]
['s', 'b']
>>> s[2]
(1, 2, 3)

list有許多屬性方法,通過dir()可以查看。

>>> dir(s)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']


append是追加一個元素,extend也是對list進行添加,兩者的不同在於append是將追加的對象最爲一個整體,添加到list裏面,即成爲list的一個元素;而extend是將追加的元素拆分,將其基本元素追加到list中,這樣添加進list的就可能不止一個元素。

>>> m = ['a']
>>> n = ['b', 'c']
>>> x = ('123', '456')
>>> m.append(n)
>>> m
['a', ['b', 'c']]
>>> m.extend(n)
>>> m
['a', ['b', 'c'], 'b', 'c']
>>> m.extend(x)
>>> m
['a', ['b', 'c'], 'b', 'c', '123', '456']
>>> m.append(x)
>>> m
['a', ['b', 'c'], 'b', 'c', '123', '456', ('123', '456')]


count計算某元素的個數;index是元素在list中的下標;insert向list插入元素,需要指定插入的位置;pop類似於堆棧中的push,是將list末尾的元素push出來,原list刪除該元素;remove刪除某元素;reverse將list所有元素順序顛倒;sort是一個排序函數,能夠制定排序函數,實現自己需要的排序規則。

②tuple與list類似,也可以通過下表來查找元素。它與list最大的區別在於tuple的元素是不可改變的。正因爲如此,tuple的屬性方法對外的只有兩個查詢類:count,index。

>>> s = (1, 2, 3, 4)
>>> s[1:4]
(2, 3, 4)
>>> s[3] = 5

Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    s[3] = 5
TypeError: 'tuple' object does not support item assignment
>>> dir(s)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']


③dict是相當靈活的數據結構,它的每個元素由一個key和一個value組成。我們能夠根據key來查找元素,就好像查字典一樣,value是我們要查的字。dict的元素同樣能夠嵌套。

>>> s = {"1": 1, "2": "red", "3": {'key': "dog"}, "4": [1, 2, 3]}
>>> s["4"]
[1, 2, 3]


dict的屬性方法最多,其中items,get,keys,values等是較常用的且很好用的方法。

>>> dir(s)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']


items是按照(key,value)列出dict內所有的元素,keys則是列出所有的key,values是列出所有的value。

>>> s.values()
[1, {'key': 'dog'}, 'red', [1, 2, 3]]
>>> s.items()
[('1', 1), ('3', {'key': 'dog'}), ('2', 'red'), ('4', [1, 2, 3])]
>>> s.keys()
['1', '3', '2', '4']


get是根據key獲取dict中某個value, 該函數在元素不存在的條件下可以指定一個值,多數指定爲None,這不影響原dict。

>>> s
{'1': 1, '3': {'key': 'dog'}, '2': 'red', '4': [1, 2, 3]}
>>> s.get("3")
{'key': 'dog'}
>>> s.get("6", "dog")
'dog'
>>> s
{'1': 1, '3': {'key': 'dog'}, '2': 'red', '4': [1, 2, 3]}


 

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