python3学习笔记13(数据结构)

参考http://www.runoob.com/python3/python3-data-structure.htmlhtml

列表

列表是可修改的。python

列表方法让列表能够方便的做为一个堆栈来使用,堆栈做为特定的数据结构,最早进入的元素最后一个被释放(后进先出)。数据结构

其中用append()方法能够把一个元素添加的堆栈顶;能够用不指定索引的pop()方法把一个元素从堆栈顶释放出来,返回最后一个元素。app

列表页能够用做队列,只是队列里是第一加入的元素,第一个取出来;拿列表作队列效率不高。在列表的最后添加或弹出元素速度快,然而在列表里插入或头部弹出速度不快(由于全部其余的元素都得一个一个移动)例如popleft()方法。函数

列表推导式

列表推导式提供了从序列建立列表的简单途径。应用程序将一些操做应用于某个序列的每一个元素,最后用得到的结果做为生成新列表的元素,或者根据肯定的断定条件建立子序列。测试

vec = [2,4,6]
vec1 = [3*x for x in vec]
#每一个列表推导式在for以后跟一个表达式,若是但愿推导出一个元组,必须用括号
print(vec1)
vec2 = [[x,x**2] for x in vec]
print(vec2)
vec3 = [3*x for x in vec if x >3] #if语句过滤
print(vec3)
vec4 = [3*x for x in vec if x <2]
print(vec4)
vec5 = [1,2,3]
vec6 = [x*y for x in vec for y in vec5 ]
print(vec6)
vec7 = [x+y for x in vec for y in vec5]
print(vec7)
vec8 = [vec[i]*vec5[i]for i in range(len(vec))]
print(vec8)

嵌套列表解析

Python的列表还能够嵌套。htm

#3x4矩阵列表
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
]
cr = [[row[i] for row in matrix] for i in range(4)]
#3x4矩阵列表转换为4x3列表
print(cr)

#方法二
transposed = []
for i in range(4):
transposed.append([row[i] for row in matrix])
print(transposed)

del 语句

使用 del 语句能够从一个列表中依索引而不是值来删除一个元素。能够用del语句从列表中删除一个切割,或清空整个列表。索引

a = [-1,1,2,3,345,345,111.5]
del a[0]
print(a)
del a[2:4]
print(a)
del a[:]
print(a)
del a #也能够删除实体变量
print(a)

元组和序列

t = 12345,54321,'hello!'   #元组由若干逗号分隔的值组成
t[0]
print(t[0])
print(t)
u = t,(1,2,3,4,5) #元组在输出时老是有括号的,以便于正确表达嵌套结构。
print(u)

集合

集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。队列

能够用大括号({})建立集合。注意:若是要建立一个空集合,你必须用 set() 而不是 {} ;后者建立一个空的字典,下一节咱们会介绍这个数据结构。字符串

basket = {'apple','orange','apple','pear','orange','banana'}
print(basket) #删除重复的
x1 = 'orange' in basket #检测成员是否存在集合中
print(x1)
x2 = 'crabgrass' in basket
print(x2)

x3 = set('abcdacbabc')
x4 = set('alacazz')
print(x3)
print(x3-x4) #在a中有,b中没有
print(x3|x4) #在a或b有
print(x3&x4) #在a和b中同时有
print(x3^x4) #在a或b中的字母,可是不一样时在a和b
x5 = {x for x in 'abracadabra' if x not in 'abc'} #集合也支持推导式
print(x5)

字典

序列是以连续的整数为索引,与此不一样的是,字典以关键字为索引,关键字能够是任意不可变类型,一般是字符串或数值。

在同一个字典中,关键字必须是互不相同。

建立空的字典:{}

d = {'a':5601,'b':4000}d['c'] = 4127print(d)print(d['a'])del d['b']print(d)d['d'] = 4127print(d)print(list(d.keys()))print(sorted(d.keys()))print('d' in d)print('e' in d)print('d' not in d)#构造函数dict()直接从键值对元组列表中构建字典d1 = dict([('a',5601),('b',4000),('c',4127)])print(d1)#字典推导能够用来建立任意键和值的表达式词典d2 = {x: x**2 for x in (2,4,6)}print(d2)#若是关键字只是简单的字符串,使用关键字参数指定键值对d3 = dict(a= 5601,b= 4000,c= 4127)print(d3)