目录
1、输入输出:
2、数据定义(多维数组,全局变量global):
3、特殊数据结构(queue)
4、数组/列表排序 arr.sort(key=lambda x:x[1])
5、其他基础语法:(for,not,程序入口)
1、输入输出:
# 输入一个数字
n = int(input())
# 接受多个输入
op, x, y = map(str, input().split()) # 操作类型, op数1, op数2
x = int(x) # 字符串转换为int
y = int(y)
# 输出
print(x)
print(x, end = "") # 不输出换行, 用""代替换行
2、数据定义(多维数组,全局变量global):
# 一维数组定义, 邻接表为例
h, e, ne, idx = [-1] * N, [0] * N, [0] * N, 0
# 二维数组定义, N行M列的二维数组
f = [[inf] * M for i in range(N)]
# 在函数中若需要使用全局变量, 需要用global声明, 特殊的数组, 队列等不用特别声明
def find(x):
global n
t = (x % 300010 + 300010) % 300010
while h[t] != 9999999999 and h[t] != x:
t = t + 1
if t == 300010: t = 0
return t
3、特殊数据结构(queue)
# 优先队列,合并果子,haffman树
from queue import * # 需要导入相应模块
q = PriorityQueue() # 定义
n = int(input())
a = list(map(int, input().split()))
if __name__ == "__main__":
for i in range(n):
q.put(a[i]) # 常用3个函数: put get qsize
ans = 0
while q.qsize() > 1:
x = q.get()
y = q.get()
q.put(x + y);
ans += x + y
print(ans)
4、数组/列表排序 arr.sort(key=lambda x:x[1])
# 最小生成树为例
N = 100010
n, m = 0, 0
p = [0] * N
e = []
def find(x):
if x == p[x]: return x
else:
p[x] = find(p[x])
return p[x]
if __name__ == "__main__":
n, m = map(int, input().split())
for i in range(0, n + 1): p[i] = i
ans = 0
for i in range(m):
x, y, z = list(map(int, input().split()))
e.append((x, y, z))
e.sort(key = lambda t : t[2]) # lambda快速定义函数, t为函数参数, t[2]为返回值
cnt = 0
for i in range(m):
fa = find(e[i][0])
fb = find(e[i][1])
if fa != fb:
p[fa] = fb
ans += e[i][2]
cnt += 1
if cnt != n - 1: print("impossible")
else: print(ans)
5、其他基础语法:(for,not,程序入口)
# for 循环
# range的用法:range(start, end + 1, step)
i : 0 ~ n - 1
for i in range(n): ... ...
i: 1 ~ n
for i in range(1, n + 1): ... ...
i: 1 3 5...
for i in range(1, n + 1, 2): ... ...
# 另外python中没有! && || ++ -- 等符号, 用not and or += -= 代替
# 还有程序的入口:
if __name__ == "__main__": ... ...