# Python 题解
2019 年 12 月份参加 CSP 之前写的代码,只做了历年的前两题,有时间可能会继续更新
## 目录
- [题解列表](#题解列表)
- [常用代码片段](#常用代码片段)
- [四舍五入](#四舍五入)
- [向上向下取整](#向上向下取整)
- [输入输出](#输入输出)
- [内置函数](#内置函数)
- [map()函数](#map函数)
- [zip()函数](#zip函数)
- [sorted()函数](#sorted函数)
- [enumerate() 函数](#enumerate-函数)
- [匿名函数](#匿名函数)
- [正则表达式及re库](#正则表达式及re库)
## 题解列表
> Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint, aut, quos ipsam temporibus libero dolor laborum ipsum fuga odit rerum rem dolorem recusandae, provident necessitatibus. Illum voluptas autem eum rerum?
>
> 使用 Jupyter Notebook 查看各题的题解代码
- [第 1 题题解汇总](题解汇总/第1题题解汇总.ipynb)
- [第 2 题题解汇总](题解汇总/第2题题解汇总.ipynb)
- [第 3 题题解汇总](题解汇总/第3题题解汇总.ipynb)
- [第 4 题题解汇总](题解汇总/第4题题解汇总.ipynb)
- [第 5 题题解汇总](题解汇总/第5题题解汇总.ipynb)
## 常用代码片段
### 四舍五入
```python
>>> round(0.5)
0
>>> round(-0.5)
0
>>> round(0.6)
1
>>> round(0.51)
1
>>> round(-0.51)
-1
```
### 向上向下取整
```python
>>> import math
>>> math.floor(0.6)
0
>>> math.ceil(0.6)
1
>>> math.ceil(-0.6)
0
>>> math.ceil(-1.6)
-1
```
### 输入输出
```python
# 输入一个整数
>>> n=int(input())
6
>>> n
6
# 输入一个整型列表
>>> l=list(map(int,input().split()))
1 2 3 4 5 6
>>> l
[1, 2, 3, 4, 5, 6]
# 同一行输出
>>> print(' '.join(map(str,l)))
1 2 3 4 5 6
>>> print(" ".join(str(i) for i in l))
1 2 3 4 5 6
# 也可遍历输出
>>> for i in l:
... print(i,end=' ')
...
1 2 3 4 5 6
```
### 内置函数
Python 内置函数如下,使用方式可查看[菜鸟教程](https://www.runoob.com/python3/python3-built-in-functions.html)
[![Python内置函数](https://cdn.jsdelivr.net/gh/eternidad33/picbed/img/QQ%E6%88%AA%E5%9B%BE20200822184129.png)](https://www.runoob.com/python3/python3-built-in-functions.html)
#### map()函数
```python
>>>def square(x) : # 计算平方数
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
```
#### zip()函数
```python
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
```
#### sorted()函数
```python
# 以下实例展示了 sorted 的最简单的使用方法:
>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5] # 默认为升序
# 你也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。
>>> a=[5,2,3,1,4]
>>> a.sort()
>>> a
[1,2,3,4,5]
# 另一个区别在于list.sort() 方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable。
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]
# 利用key进行倒序排序
>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
# 要进行反向排序,也通过传入第三个参数 reverse=True:
>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]
```
#### enumerate() 函数
```python
# 以下展示了使用 enumerate() 方法的实例:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 小标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
# 普通的 for 循环
i = 0
seq = ['one', 'two', 'three']
for element in seq:
print(i, seq[i])
i += 1
# 输出结果为:
0 one
1 two
2 three
# for 循环使用 enumerate
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i, element)
# 输出结果为:
0 one
1 two
2 three
```
### 匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
```python
>>> sum = lambda arg1, arg2: arg1 + arg2
>>> a=sum(5,5)
>>> a
10
```
### 正则表达式及re库
> 正则表达式的写法,可参看我的[博客](https://blog.csdn.net/qq_42907802/article/details/10653638),re库实例可查看[菜鸟教程](https://www.runoob.com/python3/python3-reg-expressions.html)
**正则表达式的写法**
| 操作符 | 说明 | 实例 |
| ------- | -------------------------------- | --------------------------------------- |
| `.` | . 表示任何单个字符 | |
| `[]` | 字符集,对单个字符给出取值范围` | 表示a、b、c,[a‐z]表示a到z单个字符 |
| `[^]` | 非字符集,对单个字符给出排除范围 | `[\^abc]`表示非a或b或c的单个字符 |
| `*` | 前一个字符0次或无限次扩展 | `abc\*` 表示ab、abc、abcc、abccc等 |
| `+` | 前一个字符1次或无限次扩展 | `abc+ `表示abc、abcc、abccc等 |
| `?` | 前一个字符0次或1次扩展 | `abc? `表示ab、abc |
| `|` | 左右表达式任意一个 | `abc\|def `表示abc、def |
| `{m}` | 扩展前一个字符m次 | `ab{2}c`表示abbc |
| `{m,n}` | 扩展前一个字符m至n次(含n) | `ab{1,2}c`表示abc、abbc |
| `^` | 匹配字符串开头 | `^abc`表示abc且在一个字符串的开头 |
| `$ ` | 匹配字符串结尾 | `abc$`表示abc且在一个字符串的结尾 |
| `( ) ` | 分组标记,内部只能使用`|`操作符 | `(abc)`表示abc,`(abc|def)`表示abc、def |
| `\d` | 数字,等价于[0‐9] | |
| `\w ` | 单词字符,等价于[A‐Za‐z0‐9_] | |
**re库的用法**
| 函数 | 说明 |
| --------------- | ------------------------------------------------------------ |
| `re.search()` | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 |
| `re.match()` | 从一个字符串的开始位置起匹配正则表达式,返回match对象 |
| `re.findall()` | 搜索字符串,以列表类型返回全部能匹配的子串
没有合适的资源?快使用搜索试试~ 我知道了~
曾参加过两次 CSP 竞赛,本仓库主要是历年的部分题解
共131个文件
py:65个
md:31个
java:25个
需积分: 5 0 下载量 174 浏览量
2024-10-18
18:42:37
上传
评论
收藏 288KB ZIP 举报
温馨提示
曾参加过两次 CSP 竞赛,本仓库主要是历年的部分题解
资源推荐
资源详情
资源评论
收起资源包目录
曾参加过两次 CSP 竞赛,本仓库主要是历年的部分题解 (131个子文件)
.gitignore 177B
index.html 2KB
第3题题解汇总.ipynb 64KB
第2题题解汇总.ipynb 32KB
第1题题解汇总.ipynb 21KB
第5题题解汇总.ipynb 646B
第4题题解汇总.ipynb 646B
线性分类器.java 7KB
小明种苹果.java 1KB
小中大.java 1KB
中间数.java 924B
报数.java 874B
小明上学.java 847B
卖菜.java 804B
出现次数最多的数.java 740B
图像旋转.java 674B
分蛋糕.java 662B
折点计数.java 656B
门禁系统.java 648B
最小差值.java 618B
相邻数对.java 595B
跳一跳.java 584B
相反数.java 550B
最大波动.java 538B
数列分段.java 519B
数位之和.java 422B
打酱油.java 407B
test.java 391B
最大的矩形.java 152B
有趣的数.java 149B
ISBN号码.java 147B
ImStuck.java 144B
123456.jpg 147KB
LICENSE 10KB
py3.md 46KB
py2.md 20KB
py1.md 11KB
README.md 9KB
小明上学.md 6KB
中间数.md 4KB
线性分类器.md 4KB
卖菜.md 3KB
分蛋糕.md 3KB
跳一跳.md 3KB
最小差值.md 3KB
图像旋转.md 3KB
折点计数.md 3KB
最大波动.md 3KB
门禁系统.md 3KB
相邻数对.md 3KB
README.md 3KB
打酱油.md 3KB
出现次数最多的数.md 2KB
数列分段.md 2KB
数位之和.md 2KB
相反数.md 2KB
小明种苹果.md 2KB
小中大.md 2KB
Java题解.md 2KB
报数.md 2KB
_sidebar.md 1KB
README.md 937B
_navbar.md 442B
_coverpage.md 245B
python题解.md 152B
.nojekyll 0B
Crontab.py 5KB
炉石传说.py 4KB
元素选择器.py 3KB
化学方程式.py 3KB
线性分类器.py 3KB
Markdown.py 3KB
CIDR合并.py 3KB
权限查询.py 2KB
画图.py 2KB
集合竞价.py 2KB
字符画.py 2KB
节日.py 2KB
URL映射.py 2KB
火车购票.py 2KB
命令行选项.py 2KB
路径解析.py 2KB
俄罗斯方块.py 1KB
损坏的RAID5.py 1KB
模板生成系统.py 1KB
公共钥匙盒.py 1KB
test.py 1KB
JSON查询.py 1KB
Z字形扫描.py 1KB
稀疏向量.py 1KB
风险人群筛查.py 1KB
小明种苹果(续).py 955B
消除类游戏.py 936B
回收站选址.py 913B
最大的矩形.py 879B
称检测点查询.py 764B
碰撞的小球.py 735B
窗口.py 699B
工资计算.py 610B
小明放学.py 545B
共 131 条
- 1
- 2
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7167
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2024年第十五届蓝桥杯Python A组省赛题目+参赛代码
- QtVTKDemo.zip
- 阿里巴巴普惠体3.0全套完整版字体下载,常用生僻字全显示,永久免费商用!解压直接安装
- 20241018_184442921.jpeg
- javaweb项目学生成绩管理系统springboot+mybatis+vue-java课程设计毕业设计Java技术学习
- 基于pandas、Scikit-Learn、matplotlib、PyQt5的二手房价分析与预测系统
- opencv x64文件夹
- MATLAB实现MCMC马尔科夫蒙特卡洛模拟的数据生成(含完整的程序和代码详解)
- MATLAB实现WGAN生成对抗网络数据生成(含完整的程序和代码详解)
- MATLAB实现1-DGAN生成对抗网络的数据生成(含完整的程序和代码详解)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功