关于python3 数据结构的补充

关于python3 数据结构的补充

列表

当做堆栈使用

stack = [2,3,4]
stack.append( 5 )	# [2,3,4,5]
stack.pop()			# 5
print(stack)			# [2,3,4]

当做队列使用

可以把列表当做队列使用,第一个加入的元素,第一个取出,效率不高。在队列的最后添加或弹出元素速度快,然而在列表里插入或从头部弹出速度不快,因为每一个元素都要移动

form collections import deque

queue = deque([1,2,3])
queue.append(4)
queue.popleft()		# 1
print(queue)		# [2,3,4]

列表推导式

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为新列表的元素,或者根据确定的判定条件创建子序列

每个列表推导式都在 for 之后跟一个表达式,然后跟零个或多个 for或if 子句。返回结果是一个根据表达式从其后的 for和if 上下文环境生成出来的列表,如果希望推导出一个元组,则需要使用小括号

vec = [2,4,6]
[3*x for x in vec]		# [6,12,18]

[[x,x**2] for x in vec]	# [[2,4],[4,16],[6,36]]

可以对每个元素都逐个调用某方法

freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
[weapon.strip() for weapon in freshfruit]
# ['banana', 'loganberry', 'passion fruit']

也可以用 if子句 做过滤器

[3*x for x in vec if x >3]
# [12,18]

关于循环

vec1 = [1,2,3]
vec2 = [2,4,6]
[x*y for x in vec1 for y in vec2]
# [2,4,6,4,8,12,6,12,18]
[vec1[i]*vec2[i] for i in range(len(vec1))]
# [2,8,18]

嵌套列表解析

matrix = [
     [1, 2, 3, 4],
     [5, 6, 7, 8],
     [9, 10, 11, 12],
]
print([[row[i] for row in matrix] for i in range(4)])

for i in range(4):
    for row in matrix:
        print(row[i],end=" ")

transposed = []
for i in range(4):
	transposed.append([row[i] for row in matrix])

del语句

使用 del语句 可以从一个列表中依索引删除一个元素,可以从列表中删除一段元素,或清空所有元素

a = [0,1,2,3,4,5,6]
del a[0]		# 删除一个
del a[2:4]	# 删除一段
del a[:]		# 清空

集合

集合支持推导式

字典

字典推导可以用来创建任意键和值的表达式词典

{x: x**2 for x in (2,4,6)}

构造函数可以直接从键值对元数组列表中构建字典。

dict([(['sape',4139),('guido',4127)])
# {'sape':4139,'guido':4127}

如果关键字只是简单的字符串,也可以采用关键字指定键值对的方式

dict(sape = 41,guido = 40)
# {'sape':41,'guido':40}

遍历技巧

遍历字典时,关键字和对应的值可以使用 items()方法同时解读

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
	print(k,v)

遍历序列是,索引值和对应的值可以通过enumerate()函数同时获得

for i, v in enumerate([0,1,2]):
	print(i,v)

同时遍历两个或更多个序列,使用zip()组合

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
	print(f'What is your {q}?  It is {a}.')

反向遍历一个序列,要调用 reversed()函数

for i in reversed( ['name', 'quest', 'favorite color']):
	print(i)

在遍历一个序列前,对序列排序,使用sorted()方法

basket = ['apple', 'orange', 'pear', 'banana']
for f in sorted(basket):
	print(f)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值