Python 学习笔记
1. 输入与输出
1.1 输入
默认情况下,Python input()
读取字符串类型
1.1.1 输入一个,需要转变类型
1 | n = int(input()) |
1.1.2 输入两个数据,以空格隔开
1 | # split() 将输入字符串以空格分割,分别赋予 a 和 b,赋值之前进行了 int() 类型转换 |
1.1.3 输入多个同类型数据,以空格隔开
1 | # list() 将 map 类型转变为 list 类型数据 |
1.1.4 先输入 n,再输入 n 行数据
1 | n = int(input()) |
1.1.5 输入数据,直到输入 0 截止
1 | while True: |
1.1.6 读入数据直到没有输入为止
1 | from sys import stdin |
1.2. 输出
默认情况下,Python print()
输出包含换行
1.2.1 输出一个变量
1 | a = 123 |
1.2.2 在一行内输出列表的值,以空格间隔
1 | l = [1, 2, 3] |
1.2.3 简单变量字符串格式化
1 | name = 'Mike' |
1.2.4 复杂变量格式化
1 | price = 1888 |
2. Python 基础
2.1 基础数据类型
Python 中常见数据类型如下:
- Number(数字)
- String(字符串)
- bool (布尔类型)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中分为两种:
- 不可变数据(3 个):Number(数字),String(字符串),Tuple(元组)
- 可变数据(3 个):List(列表),Dictionary(字典),Set(集合)
2.1.1 Number(数字)
Python3 中 Number 包括 int、float、bool((・o・)ノ Yes!!,bool 也是 Number 类型的一种)、complex(复数)
int 类型在 Python3 中没有大小限制,可以当作 Long 类型使用,所以 Python3 没有 Python2 中的 Long 类型
float 类型可以使用科学计数法表示,如 1.23e9
或 1.23e-9
bool 类型只有两个值:True
和 False
complex 类型用 a + bj
表示,a
是实部,b
是虚部
1 | a = 2147483649 |
2.1.2 String(字符串)
Python 中字符串用单引号 ''
或双引号 ""
包围,三引号 ''' '''
或 """ """
可以用来表示多行字符串
字符串可以使用 +
连接,*
重复
字符串可以使用 []
访问,[:]
截取
字符串的截取方式如下:
s[1]
取下标为 1 的字符s[1:4]
取下标为 1 到 4 的字符s[1:]
取下标为 1 到最后的字符s[:4]
取下标为 0 到 4 的字符s[-1]
取最后一个字符s[-4:-1]
取倒数第 4 到倒数第 1 个字符
字符串的常用方法如下:
len(s)
返回字符串长度s.strip()
去除字符串两端空格s.lstrip()
去除字符串左端空格s.rstrip()
去除字符串右端空格s.lower()
将字符串转换为小写s.upper()
将字符串转换为大写s.replace(old, new)
将字符串中的 old 替换为 news.split()
以空格分割字符串s.split(',')
以逗号分割字符串s.find(sub)
查找子字符串 sub,返回下标,找不到返回 -1s.index(sub)
查找子字符串 sub,返回下标,找不到抛出异常s.count(sub)
统计子字符串 sub 出现次数s.startswith(sub)
判断字符串是否以 sub 开头s.endswith(sub)
判断字符串是否以 sub 结尾s.isdigit()
判断字符串是否只包含数字s.isalpha()
判断字符串是否只包含字母s.isalnum()
判断字符串是否只包含数字和字母
1 | s = 'Hello, World!' |
2.1.3 List(列表)
Python 中列表是有序的,可以包含任意类型的数据,用 []
包围,用 ,
分隔
列表的截取方式与字符串类似
列表的常用方法如下:
len(l)
返回列表长度l.append(x)
在列表末尾添加元素 xl.insert(i, x)
在列表下标 i 处插入元素 xl.pop()
删除列表最后一个元素l.pop(i)
删除列表下标 i 处的元素l.remove(x)
删除列表中第一个出现的元素 xl.clear()
清空列表l.index(x)
返回元素 x 在列表中的下标,找不到抛出异常l.count(x)
返回元素 x 在列表中出现的次数l.sort()
对列表进行排序l.reverse()
对列表进行反转l.copy()
复制列表
经常使用的操作列表的方法还有切片:
print(l[2: 5])
截取列表中下标 2 到 5 的元素print(l[2:])
截取列表中下标 2 到最后的元素print(l[:5])
截取列表中下标 0 到 5 的元素print(l[-1])
截取列表中最后一个元素print(l[-4: -1])
截取列表中倒数第 4 到倒数第 1 个元素
1 | l = [1, 2, 3, 4, 5] |
2.1.4 Tuple(元组)
Python 中元组是有序的,可以包含任意类型的数据,用 ()
包围,用 ,
分隔
元组的截取方式与字符串类似
元组的常用方法如下:
len(t)
返回元组长度t.count(x)
返回元素 x 在元组中出现的次数t.index(x)
返回元素 x 在元组中的下标,找不到抛出异常
1 | t = (1, 2, 3, 4, 5) |
2.1.5 Set(集合)
Python 中集合是无序的,不包含重复元素,用 {}
包围,用 ,
分隔
集合的常用方法如下:
len(s)
返回集合长度x in s
判断元素 x 是否在集合中s.add(x)
向集合中添加元素 xs.remove(x)
删除集合中元素 x,找不到抛出异常s.discard(x)
删除集合中元素 x,找不到不抛出异常s.pop()
删除集合中任意一个元素s.clear()
清空集合
1 | s = {1, 2, 3, 4, 5} |
2.1.6 Dictionary(字典)
Python 中字典是无序的,包含键值对,用 {key: value}
包围,用 ,
分隔
字典的常用方法如下:
len(d)
返回字典长度d[key]
返回键 key 对应的值d[key] = value
设置键 key 对应的值为 valuekey in d
判断键 key 是否在字典中d.keys()
返回字典所有键d.values()
返回字典所有值d.items()
返回字典所有键值对d.get(key)
返回键 key 对应的值,找不到返回 Noned.get(key, default)
返回键 key 对应的值,找不到返回 default
1 | d = {'a': 1, 'b': 2, 'c': 3} |
2.2 函数
2.2.1 函数的定义、调用和参数
Python 中函数使用 def
关键字定义,使用 return
返回值
函数的参数可以有默认值,调用函数时可以不传递默认值参数
函数的参数可以是位置参数,也可以是关键字参数,关键字参数必须在位置参数之后
1 | def add(a, b): |
2.2.2 递归函数
递归函数是在函数内部调用函数自身
递归函数必须有一个结束条件,否则会导致无限递归
以计算阶乘为例,比如若要计算 6 的阶乘,可以先计算 5 的阶乘,然后再乘以 6,而要计算 5 的阶乘,可以先计算 4 的阶乘,然后再乘以 5,以此类推,递归函数的结束条件是 1 的阶乘是 1
1 | def factorial(n): |
2.2.3 匿名函数
Python 使用 lambda
关键字定义匿名函数,匿名函数没有函数名
匿名函数只能有一个表达式,表达式的结果就是返回值
1 | f = lambda x, y: x + y |
2.3 迭代器
2.3.1 迭代器和可迭代对象
迭代器是一个可以记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束
迭代器有两个基本方法:iter()
和 next()
字符串、列表或元组等都是可迭代对象,可以使用 iter()
方法将其转换为迭代器
1 |
|
2.3.2 生成器
生成器是一种特殊的迭代器,可以使用 yield
关键字定义生成器函数
生成器函数返回一个生成器对象,生成器对象是一个迭代器
生成器函数每次调用 next()
方法时执行,直到遇到 yield
语句返回,下次调用 next()
方法时从上次 yield
语句处继续执行
1 | def fibonacci(n): |
3. 函数式编程
3.1 高阶函数
3.1.1 map() 函数
map()
函数接收两个参数,一个是函数,一个是可迭代对象,map()
将传入的函数依次作用到序列的每个元素,并返回一个迭代器
1 | def f(x): |
3.1.2 reduce() 函数
reduce()
函数接收两个参数,一个是函数,一个是可迭代对象,reduce()
将传入的函数依次作用到序列的每个元素,每次计算的结果继续和下一个元素做累积计算
1 | from functools import reduce |
3.1.3 filter() 函数
filter()
函数接收两个参数,一个是函数,一个是可迭代对象,filter()
将传入的函数依次作用到序列的每个元素,返回值为 True
的元素组成一个迭代器
1 | def f(x): |
案例·用 filter()
函数求素数
1 | def isprime(n): |
3.1.4 sorted() 函数
sorted()
函数接收三个参数,一个是可迭代对象,一个是 key
函数,一个是 reverse
参数,sorted()
函数将传入的可迭代对象排序后返回一个新的列表
key
函数用来指定排序的关键字; reverse
参数用来指定排序的顺序, 默认为 False
,表示升序,True
表示降序
1 | l = [1, 3, 2, 5, 4] |
案例·用 sorted()
函数双值排序
1 | l = [(1, 2), (3, 1), (2, 3), (5, 4), (4, 5)] |