蓝桥杯总结笔记

蓝桥杯总结笔记(赛前复习)

  1. 对字典进行排序:用sorted()函数进行排序,默认排序为升序,降序则添加参数reverse=True,语法为sorted(可迭代对象,key=函数名,reverse=False/True)

例:

d = {}
sorted(d.items())	# 按键排序
sorted(d.items(), key=lambda x: x[1])	# 按值排序
  1. enumerate()
    遍历列表,列出数据下标和数据

例:

L = ['a', 'b', 'c']
for i, j in enumerate(L):
	print(i, j)

输出:

0 a
1 b
2 c
  1. 注意数据类型,尤其是数字,区分数字是str类型还是int类型
  2. 注意变量名是否跟外部变量名重复,注意变量的作用域
  3. 学会使用位运算
1 << n	# 表示2的n次方
a & b	# 按位与运算,若a,b用二进制表示状态,则可用(a&b)==0判断两个状态是否相交,或者判断某一位是否被选中

判断一个整数是否是2的幂

def isPowerOfTwo(n: int) -> bool:
	return n > 0 and (n & (n - 1)) == 0
  1. 注意是否需要进行边界判断,若题目给定数据可包含空,则需要对该情况进行处理,等等。
  2. Python中常见的数据结构的操作
  • dict
# 增、改
dict[key] = value			# 根据键值对添加
dict.update({key: value})	# 使用update()方法添加
# 删
del dict[key]				# 删除单一元素
dict.clear()				# 清空字典
# 查
for key, value in dict.items():	# 遍历键值
	print(key, value)

# 其他函数
dict.items()		# 以元组形式返回字典所有键值对
dict.keys()			# 以列表形式返回字典中所有键
dict.values()		# 以列表形式返回字典中所有值
  • list
list.append(x)			# 从列表尾添加元素x
list.insert(index, x)	# 向列表中index位置插入元素x
list.extend(list)		# 扩展列表
list.remove(x)			# 列表中删除元素x(删除第一个元素x)
list.pop(index)			# 删除列表中index位置的元素,index默认为-1
list.index(x)			# 返回元素x第一次出现位置的索引,不存在元素x会抛出异常,需要进行异常判断处理
list.reverse()			# 反转列表
list.sort()				# 排序列表,默认升序
list.count(x)			# 统计元素x在列表中的出现次数
  • deque

用做队列

from collections import deque
q = deque()
# 队头在右边
q.appendleft(x)	# 从左边入队
q.pop()			# 从右边出队
# 队头在左边
q.append(x)		# 从右边入队
q.popleft()		# 从左边出队

用做栈

from collections import deque
s = deque()
# 栈顶在右边
s.append(x)		# 从右边入栈
s.pop()			# 从右边出栈
# 栈顶在左边
s.appendleft(x)	# 从左边入栈
s.popleft()		# 从左边出栈
  • str
other in string				# 判断字符串string中是否存在子串other
string.find(other)			# 返回子串other在字符串string中第一次出现处的索引,若不存在则返回-1
string[begin: end: step] 	# 切片获取子串,左闭右开
list(string)				# 将字符串转为字符列表
str(integer)				# 将整数integer转为字符串类型
  1. 进制转换&ASCII
  • 10进制:int(string, base)
    注意参数类型为str,base指string的进制类型,可以将不同进制的字符串转为十进制整数
  • 其他进制
    2进制:bin()
    8进制:oct()
    16进制:hex()
    注意这些函数的参数类型为int,将十进制转为其他进制,输出为字符串类型,通常使用切片去除前缀
  • 十进制与ASCII转换
ord('A')	# 65
chr(65)		# 'A'
  1. 第三方库
  • math
# 常量
math.pi
math.e
math.inf
# 方法
math.ceil(x)		# 对浮点数向上取整
math.floor(x)		# 对浮点数向下取整
math.log(x, base)	# 以base为底x的对数,base默认为e
math.sqrt(x)		# 平方根
  • collections

主要使用Counter用来统计列表、字符串或可迭代对象中元素的数量

from collections import Counter
c = Counter(iterable)	# 计数
c.most_common(n)		# 统计出现频率最高的前n个元素,不过只返回前n个元素
c.update(iterable)		# 动态增加元素
c.subtract(iterable)	# 动态减少元素

Counter

  • itertools

    • 使用itertools.combinations(iterable, r)创建迭代器,返回iterable中所有长度为r的子序列
    import itertools
    list1 = [1, 2, 3, 4]
    list2 = list(itertools.combinations(list1, 2))
    # list2: [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
    
    • 实现一组数据的所有排列组合
    import itertools
    list1= [1, 2, 3]
    list2 = []
    for i in range(1, len(list1) + 1):
    	list2.append(list(itertools.combinations(list1, i)))
    # list2: [[(1,), (2,), (3,)], [(1, 2), (1, 3), (2, 3)], [(1, 2, 3)]]
    
  1. 列表初始化
  • 一维列表
[0] * n
[0 for _ in range(n)]
  • 二维列表

初始化n行m列的列表

[[0 for _ in range(m)] for _ in range(n)]
  1. 浮点数精度问题

推荐使用format()方法进行四舍五入,round()有坑

x = 1.234567					# x == 1.234567
y = format(x, '.3f')			# y == '1.235'	注意是str类型
z = float(format(x, '.3f'))		# z == 1.235	可以使用float()转换成浮点型,但是不一定会保留指定位数,如1.0
  1. 几何
  • 求面积
    鞋带公式
    S = 1 2 ∣ ∑ i = 1 n ( x i y i + 1 − y i x i + 1 ) ∣ S = \frac{1}{2} |\sum_{i=1}^n (x_iy_{i+1} - y_ix_{i+1})| S=21i=1n(xiyi+1yixi+1)
  1. 最终只能print答案,不能有debug的过程!

参考

Python 中几种判断子串存在的性能比较及分析
Python保留指定位数的小数
Python itertools模块combinations方法
【Green公式】Hunter’s Apprentice(判断多边形为顺时针或逆时针)–鞋带公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要做码农呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值