python期末复习
注意:本文仅仅是自己复习所用,只包含我所需要熟悉的知识点
续行
一行打不满,需要换行,但是输出的是一行的内容,用()或\
x = (1+2+3+
4+5)
y = 2+4+6+\
8+11
print(x,y)
math模块
包含常量和一些算式
import math
print(math.pi)#pi
print(math.tau)#2pi
print(math.e)#自然常数e
import math
x = 1.2
print(math.ceil(x))#向上取整
print(math.floor(x))#向下取整
print(math.comb(3,2))#组合
print(math.perm(3,2))#排列
print(math.factorial(5))#5!
print(math.copysign(2,-4))#取x的值和y的符号返回浮点数
print(math.gcd(8,4))#返回最大公约数
print(math.lcm(8,4))#返回最大公倍数
print(math.isclose(2.2,2.0,rel_tol=0.2,abs_tol=0.2))#是否接近
print(math.exp(2))#e的二次方
print(math.log(2,2))#以2为底数,x取2,如果底数没有写,默认为ln
print(math.log2(2))#等价,更精确
print(math.pow(2,4))#2的四次方
print(math.sqrt(4))#开根号
print(math.sin(math.pi/4))#sin (Π/4)其余的三角函数一样
print(math.dist((1,2),(3,4)))#计算两点欧氏距离
print(math.hypot(1,2))#计算欧式范数
print(math.inf)#正无穷
print(-math.inf)#负无穷
print(math.isinf(math.inf))#判断是否是无穷
print(math.prod((1,2,3)))#计算元组内元素的乘积
print(math.remainder(2,5))#取2相较于5的余数
print(math.degrees(2*math.pi))#转化为度数
print(math.radians(180))#转化为弧度制
random模块
random
生成一个[0,1)的伪随机数
import random
rand1 = random.random()
rand2 = random.random()
print(rand1,rand2)
randint
import random
print(random.randint(1,50))
注意1,50都是可以被取到的
randrange
在[start,end)中随机生成一个元素
import random
print(random.randrange(1,100,2))
这里的2意思是只能取奇数。
choice
从列表、元组、字符串等中随机选一个元素,如果要选多个元素用sample
import random
item = ['a','b','c','d','e']
print(random.choice(item))
shuffle
shuffle打乱排序,会随机生成一个顺序
import random
item = [1,2,3,4,6,5,7,9,8,0]
random.shuffle(item)
print(item)
sample
在一组字符串中随机选指定个数的字符随机组成一个新的字符
import random
str = ''.join(random.sample('radfdsfsadasdasdwdasdasdw',8))
print(str)
操作符
算数操作符
+
-
*
/ #3/2返回1,但3.0/2返回1.5
// #3.0//2返回1.0
% #取余
** #a**2 a的二次幂
pow(x,y) #pow(a,2)
赋值操作符
=
+=
-=
/=
//=
**=
*=
%=
比较操作符
==
!=
<> #跟1=一个意思:3<>2返回True
>
<
>=
<=
全返回bool值
逻辑
and 两个都为真则返回真,否则为假
or 两个都为假才返回假,否则为真
not
成员
in
not in
python标准数据类型
1、number
int
float
bool
complex
complex
c = 3+4j
print(c+c)
print(c**2)
print(c.real)#实部
print(c.imag)#虚部
print(3+4j.imag)虚部
print(c.conjugate())#共轭复数
print(abs(c)) #模
2、string
字符串是不可变元素,他的所有方法是对返回值进行修改而不是对字符串本身进行修改
字符串的常用方法
encode()、decode()
编码转化器
编码常见的有
ASCII
UTF-8
UTF-16
GBK等
python,encode()默认转化为UTF-8
str = '你好世界'
print(str.encode())
print(str.encode('gbk'))
print(str.encode('gbk').decode('gbk'))
output:
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
b'\xc4\xe3\xba\xc3\xca\xc0\xbd\xe7'
你好世界
format()
print('0:.4f'.format(10/3))#0表示进行format操作的索引,.4f表示保留四位小数
print('0:>10.2%'.format(1/3))#格式化为百分数字符串,总宽度为10,保留两位小数,>表示向右对齐
print("{0:,} in hex is: {0:#x},int oct is {0:#o}".format(55555))#这里的,作为千分位符
print("{1} in hex is {1:#x},{0} in oct is {0:#o}".format(555,6666))
output:
0:.4f
0:>10.2%
55,555 in hex is: 0xd903,int oct is 0o154403
6666 in hex is 0x1a0a,555 in oct is 0o1053
把字母f放在字符串前,可以这样写:
width = 90
height = 180
print(f"小明体重{width},身高{height}")
output
小明体重90,身高180
index()、rindex()、count()
index(元素):第一次出现的索引
rindex(元素):最后一次出现的索引
count(元素):数量
text = "122334444555566666"
print(text.index('4'))
print(text.rindex('5'))
print(text.count('2'))
replace()、maketrans()、translate()
replace(a,b)返回用b替换a后的字符串,所以可以拼接在一起
replace(a,b).replace(c,d).replace(…)
a = '我好帅'
print(a.replace('我','你').replace('帅','丑'))
maketrans(a,b),a、b的长度必须一样长
table = ''.maketrans('0123456789','零一二三四五六七八九')
print('32432445'.translate(table))
output
三二四三二四四五
位置摆放ljust()、rjust()、center()
ljust(空的格数,剩余格子的字符)
print('你'.ljust(20))
print('好'.rjust(20,'#'))
print('帅'.center(20,'='))
output:
你
###################好
=========帅==========
对字符串切割split()、rsplit()、join()
text = '你是个大帅逼'
print(text.split())#用空白符号分割
print(text.split(maxsplit = 2))#最高分割次数为2次
print(text.rsplit(','))#用逗号进行分割
print(','.join(['1','2','3','4']))#用逗号作为连接符,将他们连接
lower()、upper()、capitalize()、title()、swapcase()
text = 'BEtter Than Ever'
print(text.upper())
print(text.lower())
print(text.capitalize())#第一个字母是大写,其他是小写
print(text.title())#每个单词第一个字母是大写
print(text.swapcase())#大的变成小的,小的变成大的
output:
BETTER THAN EVER
better than ever
Better than ever
Better Than Ever
beTTER tHAN eVER
strip()、rstrip()、lstrip()
text = ' ========test===### '
print(text.strip())#删除两边的空格
print(text.rstrip('='))
print(text.lstrip('#'))
========test===###
========test===###
========test===###
startwith()、endwith()
用什么开头用什么结尾
3、bytes
以b开头
b'你好世界'
4、list
列表的元素可以是各种类型,相邻元素用逗号隔开
[]空列表
x = [1,2,3,4,5,6,'你好',(1,2),\
{'学号':12345,'姓名':'Dell'},[1,2,3,4,5]]#生成列表
b = list((1,2,3,4,5)) #list转换成列表
c = list(range(1,10,2))
d = list(map(str,range(10)))
list(map(str,range(5)))
list(zip('abcd',[1,2,3,4]))
list(enumerate('python'))
list(filter(str.isdigit),'a1b2c3d4')
(1) 列表常用方法
append()、insert()、extend()
append() #在末尾插入元素
insert(位置索引,插入的元素)
extend()#将可迭代对象如列表、字符串、元组等内的元素分别插入到末尾,而不是将可迭代对象作为一个整体的元素插入末尾(与append的区别)
lst = [1,2,3,4]
lst.append(5)
1st.insert(0,0)
lst.insert(2,1.5)
lst.extend([6,7])
print(lst)
pop()、remove()
lst = [1,2,3,4,5,6]
print(lst.pop()) #删除最后一个元素,并返回值,这里打印的是返回值
print(lst.pop(2)) #删除下标为2的元素,并返回值,后面的元素向前移动
print(lst)
print(lst.remove(2)) #删除第一个2,不返回元素
print(lst)
输出:
6
3
[1, 2, 4, 5]
None
[1, 4, 5]
sort()、reverse()都没有返回值
from random import sample
data = sample(range(1000),10)#找出10个不重复的随机数
print(data)
data.reverse()
print(data)
data.sort()#按大小排序
print(data)
data.sort(key=str)#按转换成字符串后的大小排序
print(data)
count()、index()
lst = [1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4]
print(lst.count(2))
print(lst.index(4))
(2)列表推导式
[<expression> for <item> in <iterable> if <condition>]
生成平方数列表
squares = [x**2 for x in range(1,6)]
print(squares)
output
[1, 4, 9, 16, 25]
筛选偶数
numbers = [1,2,3,4,5,6,7,8,9,10]
evens = [x for x in numbers if x%2 == 0]
print(evens)
output
[2, 4, 6, 8, 10]
字符串操作
fruits = ['apple','banana','orange']
upper_fruits = [fruit.upper() for fruit in fruits]
print(upper_fruits)
output:
['APPLE', 'BANANA', 'ORANGE']
嵌套列表推导式
matrix = [[i*j for i in range(1,4)]for j in range(1,4)]
print(matrix)
output
[[1, 2, 3], [2, 4, 6], [3, 6, 9]]
带条件嵌套表达式
a = [1,2,3,4,5,6,7,8]
b = [1,2,3,4,5,6,7,8]
c = [(x,y) for x in a for y in b if x==y]
d = list(zip(a,b))
print(c)
print(d)
print(c == d)
output
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8)]
[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8)]
True
(3)切片操作
data = list(range(20))
print(data[:])#获取所有元素
print(data[:3])#获取下标为0的元素到下标为2的元素
print(data[3:])#下标3及之后的元素
print(data[::3])#每3个元素取一个
print(data[-3:])#负数的话start在end的右边,这里是最后三个元素
print(data[:-5])#除了最后五个元素之外的所有元素
print(data[3::2])
output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 3, 6, 9, 12, 15, 18]
[17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[3, 5, 7, 9, 11, 13, 15, 17, 19]
5、dictionary
生成字典
一个字典的一个元素是
{key = value}
生成字典的方法:
data = dict(name = '张三',age = 18,sex = 'M')
print(data)
data = dict(zip(['name','age','sex'],['张三',18,'M']))
print(data)
data = {ch:ord(ch) for ch in 'abcd'}
print(data)
output:
{'name': '张三', 'age': 18, 'sex': 'M'}
{'name': '张三', 'age': 18, 'sex': 'M'}
{'a': 97, 'b': 98, 'c': 99, 'd': 100}
字典元素的访问
data = dict(name = '张三',age = 18,sex = 'M')
print(data['name']) #key作为下标访问
#或者
print(data.get('name'))
list(data)#将所有键转化为一个列表
list(data.values)#将所有值转化为列表
list(data.items())#将所有元素转化为列表
for key,value in data.items():
print(key,value,sep = '\t')#sep = '\t'是制表符
output:
张三
张三
name 张三
age 18
sex M
元素的修改
data[key] = '....'
如果这个key存在,则换值,如果不存在则添加元素
data = {'name': '张三', 'age': 18, 'sex': 'M', 'num': 123}
data['name'] = '李四'
data['num'] = 123
print(data)
{'name': '李四', 'age': 18, 'sex': 'M', 'num': 123}
元素的增删update()、pop()、popitem()
update:
data = {'name': '张三', 'age': 18, 'sex': 'M', 'num': 123}
print(data.pop('name'))
del data['age']
print(data.popitem())#这里打印的是返回值,popitem()删除的最后一个元素
print(data)
6、set
(1)注意事项
集合是无序、可变的容器对象,所有元素放在一对大括号内,元素之间逗号隔开,同一个集合内的元素是唯一的,不允许重复,常用来去重复值
集合只包含不可变类型数据:数字、字符串、元组等,不支持下标访问,不只是random的sample随机选取,不支持random的choice选取。
lst = [1,2,2,2,2,3,4,5,6]
b = list(set(lst))
print(b)
output
[1,2,3,4,5,6]
(2)集合常用方法
add(),update()
data = {2,3,4}
data.add(5)
data.add(2)#已经有2,则忽略此操作
data.update({4,6})#忽略4,添加6
print(data)
pop()、discard()、remove()
data = {3,4,5}
data.remove(3)
data.discard(3)
print(data.pop())#删除一个元素并返回其值
print(data)
7、tuple
(1)注意事项
1、元组只有一个元素要加个,
(3,)
2、tuple()转换成元组
3、元组不可变,不可以修改
4、元组可以作为字典的key,或者集合的元素,而列表不可以
含有列表的元组也不可以
(2)生成器表达式
gen = (2**i for i in range(8))
print(gen)
print(list(gen))
print(tuple(gen))
print(next(gen)) ##next()访问下一个元素
for item i gen:
print(item,end = '')##end = ''表示不换行
output:
<generator object <genexpr> at 0x0000017AB4F764D0>
[1, 2, 4, 8, 16, 32, 64, 128]
()
1
248163264128
序列解包
序列解包可以用这样几个
x,y,z = 1,2,3
x,y,z = (1,2,3)
x,y,z = [1,2,3]
x,y,z = map(int,'123')
data = {'a':1,"b":2,"c":3}
x,y,z = data.values()
print(x,y,z)
常用内置函数
这里是除标准库之外的
abs(10) ----10
math.fabs(10)----10.0
max(1,2,3,4....)返回最大的
min()一样
round(x,n)返回x的四舍五入值,n表示舍入到小数点后几位
list(map(str,range(5)))----['0','1','2','3','4']
list(zip('abcd',[1,2,3,4])) ---- [('a',1),('b',2),('c',3),('d',4)]
list(enumerate('python')) ----[(0,'p'),(1,'y'),(2,'t'),(3,'h'),(4,'o'),(5,'n')]
list(filter(str.isdigit),'a1b2c3d4')----['1','2','3','4']
注意项:
1、实数之间尽量不要直接比较大小,而应该用isclose来代替。因为会有精度的差异。
import math
print(0.4-0.3==0.1)
print(math.isclose(0.4-0.3,0.1))
num = 7
a = num**0.5
print(a**2 == num)
print(math.isclose(a**2,num))
输出:
False
True
False
True
random.randint(a,b)
只有这一个,是取的[a,b]里的数,其余的都是[a,b)
####3 ** 3 ** 2等于多少
操作数 操作符 操作数 操作符 操作数
是从左向右算的,所以这里是3**9,除非
(3**3)**2,这样是27 ** 2