蓝桥杯系列6——python技巧
零
参考:https://blog.youkuaiyun.com/m0_48936146/article/details/124039887
为了减少时间复杂度,同时减少写代码的难度 ,在考前两天时整理了这份技巧。感觉在蓝桥杯Python组,这些技巧还是很好用滴。
一、内置函数
1.数学函数
# 绝对值
print(abs(-10))
10
# divmod() 函数 :同时取商和余数
print(divmod(7,2))
(3, 1)
print(sum([1,2,3]))
6
# 四舍五入
print(round(5.1))
print(round(5.5))
5
6
print(pow(2,3))
#也可以使用**
print(2**3)
8
8
print(min(9,5,2,7))
2
print(max(9,5,2,7))
9
2.数据转换函数
# hex() 函数: 十进制转换成十六进制
print(hex(100))
0x64
# oct() 函数: 十进制转换成八进制
print(oct(100))
0o144
# bin() 函数 :十进制转换成二进制
print(bin(100))
0b1100100
# bool() 函数 :将指定的参数转换成布尔类型
print(bool(1))
print(bool(0))
True
False
# ord() 函数 :获取单个字符的ASCII数值
print(ord('A'))
65
# float() 函数 :转换成浮点数
print(float(10))
10.0
# chr() 函数: 转换一个整数并返回所对应的字符
print(chr(65))
A
# list() 函数: 将可迭代对象转换为列表
print(list(range(1,10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
3.对象创建函数
# open()函数:打开文件并返回文件对象
f1 = open('Hello.txt','r')
print(f1.readline())
Hello Python
# set()函数:创建一个无序不重复元素集合
set([1,2,1,1,3,4,4,6,5])
{1, 2, 3, 4, 5, 6}
4.迭代器操作函数
a = [1,2,0]
all(a)
False
any(a)
True
# sorted() 函数: 对可迭代对象进行排序
a = [3,1,4,2]
sorted(a)
[1, 2, 3, 4]
# map()函数: 通过自定义函数实现对序列的元素映射操作并返回操作后的结果
list(map(int,['1','2','3']))
[1, 2, 3]
5.基本常用函数
print("{} {}".format("hello", "world"))
print("{:.2f}".format(3.1415926));
hello world
3.14
二、字符串操作
string = "123455"
str0 = "1"
# 返回 str 在 string 里面出现的次数
# 如果 beg 或者 end 指定,则返回指定范围内 str 出现的次数
# string.count(str0, beg=0, end=len(string))
string.count(str0, 0, len(string))
1
# string.endswith(obj, beg=0, end=len(string))
print(string.endswith(str0, 0, len(string)))
print(string.endswith("5", 0, len(string)))
False
True
# 检测 str 是否包含在 string 中,如果是返回开始的索引值,否则返回-1
# string.find(str, beg=0, end=len(string))
string.find(str0, 0, len(string))
0
# 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
# seq.join(string)
seq = " "
print(seq.join(string))
1 2 3 4 5 5
# 截掉字符串左边的空格或指定字符
print(string.lstrip("13"))
# 删除 string 字符串末尾的指定字符
print(string.rstrip("554"))
# 匹配时不是按照整个字符串匹配的,而是一个个匹配的
23455
123
string1 = "aAaa"
print(string1.upper())
print(string1.lower())
print(string1.swapcase()) # 大小写翻转
AAAA
aaaa
AaAA
# 列表转化为整数
a=[1, 3, 5]
b=['4', '5', '6']
r1 = int("".join(map(str, a)))
r2 = int("".join(map(str, b)))
print(r1,r2)
135 456
三、math的使用
import math
1.向上取整
print(math.ceil(3.1))
4
2.向下取整
print(math.floor(3.1))
3
3.乘方 开方
print(math.pow(10,3))
print(math.pow(27,1/3))
1000.0
3.0
四、正则表达式
import re
s = 'Regular 123 Expression 456'
re.findall(r'\d+',s)
['123', '456']
在目标字符串target 中查找符合规则rule 的字符串,后面还可以跟一个规则选项flag用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。返回结果结果是一个列表,中间存放的是符合规则的字符串。如果没有符合规则的字符串被找到,就返回一个空列表。
^:匹配字符串开头
" * " 匹配前面的子表达式零次或多次
" + " 匹配前面的子表达式一次或多次
" ? " 匹配前面的子表达式零次或一次
" [abc]" :方括号表示字符集合,例子表示一个字符串有一个 “a” 或 “b” 或 “c” 等价于 [z|b|c]
" [a-z]": 表示一个字符串中存在一个 a 和 z 之间的所有字母
" [^a-z]" :表示一个字符串中不应该出现 a 到 z 之间的任意一个字母
" [0-9]": 表示一个字符串中存在一个 0 和 9 之间的所有数字
" \d " 匹配一个数字字符,等价[0-9]
" \D " 匹配一个非数字字符,等价[^0-9]
" \w" 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”
" \W" 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”
五、文件操作
fp = open('hello.txt','r')
res = []
s = fp.readlines()
for i in s:
res.append(i.strip('\n')) #使用strip()去掉换行符,如果不去的话会把‘\n’也读进来
fp.close() #记得要关闭连接,养成良好习惯
print(res[:])
['Hello Python']
import itertools
s=[1,2,3]#序列
#l为排列组合的长度:从序列里面取几个出来
l=2
x=itertools.permutations(s,l)
y=itertools.combinations(s,l)
#如果要查看x,y的内容,转化为列表
print(list(x),list(y))
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] [(1, 2), (1, 3), (2, 3)]
补充
提高Python技能的实用技巧
Python作为一种流行的编程语言,具有广泛的应用领域,从Web开发到数据科学和机器学习。在本篇博客中,我将分享一些提高Python编程技能的实用技巧,无论你是初学者还是有经验的开发者,这些技巧都能帮助你更高效地使用Python。
1. 列表推导式
列表推导式是一种用于创建列表的简洁方式,它可以用一行代码替代传统的for循环。例如,要创建一个包含1到10的平方的列表,你可以这样做:
squares = [x**2 for x in range(1, 11)]
这比使用for循环来迭代并填充列表更加简洁和可读。
2. 字典推导式
与列表推导式类似,字典推导式用于创建字典。它可以帮助你从其他数据结构中创建字典,例如,将两个列表合并成一个字典:
keys = ['a', 'b', 'c']
values = [1, 2, 3]
my_dict = {key: value for key, value in zip(keys, values)}
3. 解包和交换变量
Python允许你通过解包来一次性赋值多个变量。例如,要交换两个变量的值,你可以使用以下方式:
a, b = b, a
这样,a和b的值会互相交换,而无需使用中间变量。
4. 使用enumerate()函数
enumerate()函数用于同时获取列表或其他可迭代对象的索引和值。这对于需要同时遍历列表和跟踪索引的情况非常有用。例如:
my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list):
print(f'Index {index}: {value}')
5. 使用zip()函数
zip()函数用于将多个可迭代对象合并成元组对,这对于同时迭代多个列表或序列非常有用。例如:
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f'{name}: {score}')
6. 使用collections模块
Python的collections模块提供了许多有用的数据结构,如defaultdict、Counter等,它们可以简化你的编程任务。例如,Counter用于计数列表中元素的出现次数:
from collections import Counter
my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
count = Counter(my_list)
print(count)
7. 列表切片
列表切片允许你从列表中提取子集。你可以使用切片来访问列表的一部分,如获取前几个元素、反转列表等。
my_list = [1, 2, 3, 4, 5]
subset = my_list[:3] # 获取前三个元素
reversed_list = my_list[::-1] # 反转列表
8. 使用with语句管理文件
Python的with语句可用于自动管理文件的打开和关闭,确保在使用文件后它会被正确关闭。例如:
with open('file.txt', 'r') as file:
data = file.read()
# 文件在with块结束后自动关闭
9. 使用虚拟环境
虚拟环境允许你在项目之间隔离Python包的安装,以防止包冲突。你可以使用virtualenv
或Python的内置venv
来创建虚拟环境。
# 使用venv创建虚拟环境
python -m venv myenv
10. 注释和文档字符串
编写清晰的注释和文档字符串是良好编程实践的一部分。注释可以帮助其他人理解你的代码,而文档字符串则用于生成文档。
def my_function(x):
"""
这是一个示例函数的文档字符串。
Args:
x (int): 输入参数。
Returns:
int: 返回值。
"""
return x * 2
这些是提高Python技能的一些实用技巧,希望它们能够提高你的编程效率和代码质量。继续探索Python的更多功能和库,以不断提升你的编程技能。