数据结构
数据结构 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)