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)]) #过滤元素


posted @ 2023-06-14 01:05  失控D大白兔  阅读(38)  评论(0编辑  收藏  举报