数据结构

数据结构
list.append(x)    把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.extend(L)    通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。
list.insert(i, x)    在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x)
会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x)    删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i])    从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。
(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)
list.clear()    移除列表中的所有项,等于del a[:]。
list.index(x)    返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x)    返回 x 在列表中出现的次数。
list.sort()    对列表中的元素进行排序。
list.reverse()    倒排列表中的元素。
list.copy()    返回列表的浅复制,等于a[:]。

将列表当做堆栈使用
列表方法可以使得列表可以很方便的作为一个堆栈使用,堆栈作为独特的数据结构,最先进入的元素最后一个被释放(先进后出)
用append()方法可以把一个元素添加到堆栈顶,用不指定元素索引的pop()方法可以把一个元素从堆栈释放出来

将列表当队列使用
也可以吧列表当队列使用,只是队列里第一个加入的元素,第一个取出来,但是拿列表用做这样的目的的效率不高
在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度不快(因为所有的其他元素都是一个一个移动)

列表推导式
列表推导式提供了从序列创建列表的简单途径,通常应用程序将一些操作应用用于某个序列的某个元素,用其获得的结果作为生成
新列表的元素,或者根据确定的判断条件创建子序列
每个列表堆导式都在for之后跟一个表达式,然后有零到多个for或if子句,返回结果是一个根据表达从其后的for和if上下文
环境中生成列出来的列表,如果希望表达式堆导出一个元素,就必须用括号

dle语句
使用del语句可以从一个列表依碎银而不是值来删除一个元素,这与视屏pop()返回一个值不同,可以用del语句从列表中
删除一个切割,或清空整个列表

a = [1,2,3,4,5,6,7,8,9]
# del a[0:5]  # 删除索引0 - 5 之间的元素
# del a[:]    # 删除全部元素
# print(a)

元组和序列
a = [123,456,"abc"]
print(a[0])

集合
集合是一个无序不重复元素的集,基本功能包括关系测试和消除去重元素
可以用大括号({})创建集合,如果要创建一个空集合必须用set()而不是{},后者创建一个空字典
a = {"abc",123,465,"li","cheng","long",123,123,456}
print(a)

字典
序列是以连续的整数为索引,不同的是字典以关键字为索引,关键字可以是任意不可变类型,通常用字符串或者数值
理解字典的最佳方法是把它看成是无序的键=>值对,在同一个字典内,关键字必须是互不相同
一对大括号创建一个空的字典:{}
a = {123:456,"cheng":"long"}
print(a)

构建函数dict()直接从键值对元组列表构建字典,如果有固定模式,列表堆导式指定特定的键值对
s = dict(sape=4139, guido=4127, jack=4098)
print(s)
b = dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
print(b)

遍历技巧
在字典中遍历时,关键字和对应的值可以使用iteme()方法同时解读出来
s = {'cheng': 'long', 'hello': 'world'}
for a,b in s.items():
    print(a,b)

在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时得到
for a, b in enumerate([1, 2, 3, 4, 5]):
    print(a, b)

同时遍历两个或多个的序列,可以只用zip()组合
a = ['mingzi', 'xiaohuo', 'xiaozi']
# b = ['long', 'chenglong', 'lichenglong']
# c = ["chi","he","wan"]
# for q, w, d in zip(a, b, c):
#     print("ni jiao shen me {0} ? " "ta shi {1} ," "xi huan shen me {2}!".format(q, w, d))

要反方向遍历一个序列,首先指定这个序列,然后调用reversed()函数
for s in reversed(range(1,10,2)):
    print(s)

要按顺序遍历一个序列,使用sorted()函数返回一个已排列的序列,并不修改原值
s = [1, 2, 3, 4, 5, 6, 7, 8, 9, ]
for q in sorted(set(s)):
    print(q)

 

posted @ 2018-08-27 11:32  principles  阅读(116)  评论(0编辑  收藏  举报