python的三种数据结构

来源:互联网 发布:矩阵qr分解例题 编辑:程序博客网 时间:2024/04/30 13:51

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] = 5Traceback (most recent call last):  File "<pyshell#49>", line 1, in <module>    s[3] = 5TypeError: '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]}


 

原创粉丝点击