python vec3_python3学习笔记13(数据结构)

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

列表

列表是可修改的。

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

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

列表页可以用作队列,只是队列里是第一加入的元素,第一个取出来;拿列表做队列效率不高。在列表的最后添加或弹出元素速度快,然而在列表里插入或头部弹出速度不快(因为所有其他的元素都得一个一个移动)例如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的列表还可以嵌套。

#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'] = 4127

print(d)

print(d['a'])

del d['b']

print(d)

d['d'] = 4127

print(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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值