char字符串进行加减法

1
2
3
4
5
6
7
8
9
10
11
使用ord(c)来获得unicode代码,之后chr来进行编码回去
s = list(s)
for i,c in enumerate(s):
dis = min(ord(c)-ord('a'), ord('z')-ord(c)+1)
if dis <= k:
s[i] = 'a'
k -= dis
else:
s[i]=chr(ord(c)-k)
break
return ''.join(s)

字典

1
rec.get(num,0) #不存在默认返回,与java类似,存在直接使用rec[num]

优先队列

直接使用get还有put来操作

需要借助list,存放数据

heapq是操作方法函数,然后使用push

1
heapq.heappush(heap,(value,key))

移除

也是借助heap来进行heappop,heap[0][0]已经是最小的

默认是最小堆

1
2
3
4
5
6
7
8
heap = []
for key,value in rec.items():
if len(heap) < k:
heapq.heappush(heap,(value,key))
else:
if value > heap[0][0]:
heapq.heappop(heap)
heapq.heappush(heap,(value,key))

nonlocal

实现全局的效果,相当于c++的static变量

直接使用self就可以

最大最小

使用

1
return dfs(root,float('-inf'),float('inf'))
1
max(max(row) for row in f)

自定义排序函数

通过引入functools。cmp_to_key

排序-1,表明最前面

1
2
3
4
5
6
7
8
def order(a,b):
a=str(a)
b=str(b)
if a+b<b+a:
return -1
else:
return 1
password.sort(key=functools.cmp_to_key(order))

counter实现

1
2
3
4
5
6
7
8
def order(a,b):
a=str(a)
b=str(b)
if a+b<b+a:
return -1
else:
return 1
password.sort(key=functools.cmp_to_key(order))

相当于免去自己使用hashmap了