Python 刷题常用语句
INT_MAX = 2**63-1 = sys.maxsize #最大整型
INT_MIN = -2**63 = -sys.maxsize -1 #最小整型
float('inf') #比其它数都大的数
float('-inf') #比其它数都小的数
遍历枚举
for val,cnt in Counter('aabbccc').items(): //再遍历字典进行处理,遍历键值对
for key in count.keys(): #遍历键
for val in count.values(): #遍历值
for i, element in enumerate(seq): //枚举索引和内容
print i, element
列表操作
dp = [ [0]*col for _ in range(row) ] #初始化二维列表
res.append(path[:]) #添加列表副本而不是引用
res.extend(iterable)
re.count(numble) #求指定值的个数
res.clear() #清空数组
array[::2] #取所有偶数索引
array[1::2] #取所有奇数索引
array[::-1] #反转数组
array.sort() #数组从小到大排列,不想改变原有数据,使用sorted
array.sort(reverse=1) #数组从大到小排列
array.sort(key=lambda x: (-x[0], x[1])) #将二维数组第一位降序排序,如果第一位相同,就按第二位升序排序,按照key的函数返回值进行从小到大排序
dic = sorted(dic.items(), key=cmp_to_key(cmp_func))
for col in zip(*grid): #遍历二维列表的列
max() #求数组最大值
min() #求数组最小值
sum() #求数组和
index = bisect(ls, x) #有序列表二分法查找获取索引值
bisect.bisect_left(ls,x)#插到左侧
bisect.bisect_right(ls,x)#插到右侧
字符串操作
s1.split() #将字符串按空格进行分割
' '.join(str(i) for i in list) //字符串分割逆操作
s1.isdigit() #判断字符串是否全是由数字组成
s1.islower() #判断字符串是否为小写字母
特殊容器
#计数器
count = Counter('aabbccc')#可以对字符串或列表进行处理,得到统计频率的字典
#有序字典
mydict = OrderedDict({'a':2,'b':1,'c':0})
# 按照字典的值进行排序
a1 = sorted(a.items(), key=lambda x: x[1])
# 按照字典的键进行排序
a2 = sorted(a.items(), key=lambda x: x[0])
#利用集合去重
l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
#双端队列实现栈和队列
a=deque([1,2,3])
a.pop() #出右侧
a.append(4) #入右侧
a.popleft() #出左侧
a.appendleft(0) #入左侧
#优先队列
Q=PriorityQueue() #默认从小到大排序
Q.put(1)
Q.get()
sorted_list = SortedList() #有序列表
特殊操作
#map 操作
a = list(map(square, [1, 2, 3, 4, 5])) # 使用自定义函数计算列表各个元素的平方
b = list(map(lambda x: x**2, [1, 2, 3, 4, 5])) # 使用 lambda 匿名函数求平方
#zip 操作
for team, league, country in zip(teams, leagues, countries): #使用zip同时遍历三个列表
#reduce 操作
res = reduce(lambda x, y: x * 10 + y, lst) #前一个元素乘以十加上后一个元素,迭代执行,返回一个结果
#filter 操作
f = filter(lambda x: 2 < x < 10 and x % 2 == 0, [v for v in range(18)]) #过滤元素