本文档主要涉及使用Python编写函数时,经常使用的语法,并不是系统性地介绍Python。
数据类型
注意Python在声明变量时并不需要指定数据类型
简单类型
- 整数(int)
- 浮点数(float) 【注意Python没有Double类型】
- 复数(complex)
- 字符串(str)
- 布尔值(bool)
- 空值(None)
容器类型
- 列表list
- 元组tuple
- 字典dict
- 集合set
1 |
|
性质
数据结构 | 定义符号 | 元素是否可变 | 元素是否可重复 | 元素是否有序 |
---|---|---|---|---|
列表(list) | [] | 可变 | 可重复 | 有序 |
元组(tuple) | () | 不可变 | 可重复 | 有序 |
字典(dict) | {key: value} | 可变 | key不可重复 value可重复 | 无序 |
集合(set) | {} | 可变 | 不可重复 | 无序 |
输入
单个输入
1 |
|
单个数字输入
默认情况下,input()
函数返回的内容是字符串。如果你需要将输入转换为其他数据类型(如整数或浮点数),可以使用类型转换函数。
1 |
|
多个数字输入
1 |
|
解释:
input()
:函数用于获取用户的输入。默认情况下,它返回一个字符串。
input().split()
:方法用于将输入的字符串分割成多个部分,默认是按空格进行分割。它返回一个字符串列表。例如,如果用户输入 1 2 3
,则 input().split()
会返回 ['1', '2', '3']
。
map(int, input().split())
:
map()
函数接受两个参数:一个函数(这里是int
)和一个可迭代对象(这里是input().split()
的返回值)。它将int
函数应用于列表中的每个元素,将字符串转换为整数。因此,map(int, input().split())
将返回一个可迭代对象,其中包含整数。
list(map(...))
: 函数用于将 map
对象转换为列表。最终结果是一个包含输入整数的列表。
x a, b, c = list(...)
:
- 这个部分是一个解包赋值。它将列表中的值依次赋给变量
x
、a
、b
和c
。需要注意的是,如果list(map(...))
返回的列表中元素的数量与变量的数量不匹配,将会抛出ValueError
。
多个输入
你可以使用 split()
方法来接受多个输入并将其分隔成列表。
1 |
|
打印
标准格式:
1 |
|
- 默认打印完成自动换行 end=’\n’,相当于Java里的System.out.println()。
- 默认打印对象之间使用一个空格连接sep=’ ‘。
- 默认在控制台打印file=sys.stdout,亦可写入指定文件。
- 默认情况下,print() 函数会在遇到换行符时自动刷新输出。如果想要立即刷新输出,可以将 flush 参数设置为 True。
格式化数据
1 |
|
循环控制
在 Python 中,可以使用 for ... in ...
遍历任何可迭代对象(iterable)。可迭代对象是指实现了 __iter__()
或 __getitem__()
方法的对象。以下是常见的一些可以使用 for ... in ...
遍历的类型:
字符串
1 |
|
- i依次表示字符串变量中的每一个字符
数组
1 |
|
range 对象
1 |
|
字典
1 |
|
注意,当我们不需要使用遍历对象里的实际值的时候,可用_
代替
1 |
|
栈
使用列表模拟
1 |
|
队列
使用列表模拟
1 |
|
- 使用
pop(0)
的时间复杂度是O(n),对于大型数据量不适合使用 - pop() 函数默认参数是-1
字典
创建
1 |
|
访问字典元素
可以通过键来访问字典中的值:
1 |
|
添加或更新元素
可以通过赋值的方式添加或更新键值对:
1 |
|
删除元素
使用 pop()
方法删除指定键,并返回该键对应的值:
1 |
|
使用 del
关键字删除键值对:
1 |
|
遍历
可以使用 items()
方法遍历键值对:
1 |
|
使用 keys()
和 values()
方法遍历键或值:
1 |
|
检查键是否存在
使用 in
关键字检查字典中是否包含某个键:
1 |
|
列表
创建/初始化
1 |
|
添加元素
append(x):在列表末尾添加一个元素 x
。
1 |
|
删除元素
pop([i]):删除并返回指定索引 i
处的元素。不指定索引时,默认删除并返回最后一个元素。
1 |
|
排序
sort(key=None, reverse=False):对列表进行原地排序。key
是一个函数,用来指定排序规则;reverse=True
表示降序排序。
1 |
|
sorted(list, key=None, reverse=False):返回一个排序后的新列表,不改变原列表。
1 |
|
长度
len(list):返回列表中元素的数量。
1 |
|
切片
Python 的列表切片(slicing)是一种从列表中提取子列表的简便方法,语法如下:
1 |
|
其中:
start
:切片开始的索引位置,包含该位置(默认是0
)。stop
:切片结束的索引位置,不包含该位置(默认是列表长度)。step
:步长,表示每隔几个元素取一个(默认是1
)。
示例
假设我们有一个列表:
1 |
|
基本切片:
1
numbers[2:5] # [2, 3, 4]
**省略
start
和stop
**:1
2numbers[:5] # [0, 1, 2, 3, 4]
numbers[5:] # [5, 6, 7, 8, 9]使用负索引:
1
numbers[-3:] # [7, 8, 9]
**步长
step
**:1
2numbers[::2] # [0, 2, 4, 6, 8]
numbers[1::2] # [1, 3, 5, 7, 9]反向切片:
1
numbers[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
切片可以用于生成列表的子列表,非常灵活。
切片操作:可以通过切片获取列表的子列表,支持步长。
1 |
|
注意
在 Python 列表切片中,如果省略了 start
或 stop
,即使给定的 start
或 stop
超出了列表的合法索引范围,Python 也不会报错,而是自动将其调整到列表的有效范围内。
假设一个列表:
1 |
|
start
超过最大索引:1
numbers[10:] # 返回空列表 []
尝试从索引
10
开始切片,但由于超出范围,返回空列表。stop
超过最大索引:1
numbers[:10] # 返回整个列表 [0, 1, 2, 3, 4, 5]
stop
超出范围,Python 自动调整为列表末尾。负索引超出范围:
1
numbers[-10:] # 返回整个列表 [0, 1, 2, 3, 4, 5]
如果负索引超出范围,Python 会自动调整为
0
,即从列表开始位置切片。
当 start
或 stop
超出范围时,Python 切片操作会自动调整到有效范围,而不会报错。
是否存在
in 和 not in:检查元素是否在列表中。
1 |
|
逆置
1 |
|
去重
1 |
|
字符串函数
在 Python 中,字符串是一个重要的数据类型,提供了多种内置方法来处理和操作字符串。以下是一些常用的字符串方法及其功能:
大小写
str.lower()
: 将字符串中的所有字符转换为小写。
1 |
|
str.upper()
: 将字符串中的所有字符转换为大写。
1 |
|
查找和替换
str.find(sub)
: 查找子字符串 sub
在字符串中的第一个位置,如果未找到则返回 -1
。
1 |
|
str.replace(old, new)
: 将字符串中的 old
子串替换为 new
子串。
1 |
|
切割和连接
str.split(sep)
: 根据指定的分隔符 sep
将字符串切割为列表。
1 |
|
str.join(iterable)
: 将可迭代对象中的字符串连接成一个新的字符串。
1 |
|
去除空白
str.strip()
: 去除字符串开头和结尾的空白字符。
1 |
|
格式化字符串
str.format()
: 用于格式化字符串,插入变量值。
1 |
|
检查字符串
str.startswith(prefix)
: 检查字符串是否以指定的前缀开头。
1 |
|
str.endswith(suffix)
: 检查字符串是否以指定的后缀结尾。
1 |
|
其他
str.count(sub)
: 计算子字符串在字符串中出现的次数。
1 |
|
str.isdigit()
: 检查字符串是否只包含数字。
1 |
|
str.isalpha()
: 检查字符串是否只包含字母。
1 |
|
数学函数
1 |
|
注意:对于max,min函数
如果只有一个参数,必须是一个可迭代对象(例如列表、元组、字符串等)也即实现了 __iter__()
__方法的类的实例
查看数据类型
1 |
|
范围函数range
1 |
|
- range里只有一个数(a),则从0开始,步长为1,到a-1结束
- range里有两个数(a,b),则从a开始,到b-1结束.步长为1
- range里有三个数(a,b,c),则从a开始,到b-c结束.步长为c
- 区间是左闭右开 即 $[a,b)$
随机数
1 |
|
- 需要引入random包
- 需要给定上下限。
- 仅满足统计学上的均匀分布,并不具备不可预测性。
其它
三元表达式
Python实际上没有三元表达式,,,这只是一种代替写法
1 |
|
交换数组两个元素
元素直接交换
1 |
|
数组元素交换
1 |
|