Python基础知识汇总(避坑)
(1)字符串(全部返回的都是新的字符串,字符串属于有序不可变序列)
s.replace(old,new,[max])
s.strip('a’):从字符串前后剔除字符串’a’
s.lstrip('a’):从左边开始删除字符串’a'
s.rstrip('a’):从右边开始删除字符串’a'
s.index('k’,start,end):找不到会报错,建议前面加个异常处理结构
s.find('k’,start,end):找不到不会报错
s.upper():所有字符转换为大写字符
s.lower():所有字符转换为小写字符
s.capitalize():首字符的首字母大写
s.title():所有字符首字符大写
s.isalpha():判断字符是否为字母
s.isupper():判断字符是否为大写
s.islower():判断字符是否为小写
s.center(10,’*’):会填充字符
正则表达式:
import re:导入字符处理模块
re.match(pattern,s,[flag]):匹配
re.search(pattern,s,[flag]):查找
re.findall(pattern,s,[flag]):查找
pattern=re.compile(正则表达式)
flag取值:
re.I:匹配时忽略字符大小写
re.L:根据本地设置而更改\w\W\b\B\S\s的匹配内容
re.M:多行匹配
re.S:使’.'也匹配模式
re.U:匹配Unicode字符
re.X:忽略patterns中的空格,并使用#注释
(2)列表(列表属于有序可变序列)
列表仅用于表示一维和二维数据
l.index('k’,start,end):作用与上相同
l.append():类似于栈的入栈
l.pop():类似于栈的出栈
l.insert(i,value):在下标i出插入指定长,列表长度加一,i取值可以为[0,len(l)]
l.remove(’'k):删除’k’在列表中出现的第一次,列表长度减一
l[a:]:序列切片操作l[::-1]等价于reversed(l)
a=b:a,b指向同一对象,会互相影响
a=b[:]:a只是复制了b中所有的值,但是两者互不干扰
l.extend(l1):l会将l1中元素追加到自己的末尾,不改变其内存首地址,属于原地操作
(3)字典 (字典属于可变序列)
d=dict()等价于d={}:字典初始化
dict.pop(d[a]):删除键值对,返回指定键值的值(不存在会报错,建议用异常处理结构检查)
dict.items():返回一个键值对组成的迭代对象,可以用list()强制转换
dict.keys():返回一个键值组成的迭代对象
dict.values():返回一个键值的值组成的迭代对象
dict.get(a,b):获取字典中指定键值a的值,不存在返回b(默认值,可以自己设置)
字典的键值必须为不可变数据类型:元组,字符串,常量(整型,复数,浮点型),且键值唯一。
字典排序:按键的值排序,逆序:
k=sorted(dict…items(),key=lambda x:x[1],reverse=True)
按键值排序,逆序
k=sorted(dict.items(),lambda x:x[0],reverse=True)
二维排序
m=sorted(nums,key=lambda x:(nums.count(x),-x))
nums:一个可遍历序列,排序先按元素出现次数排序,当次数相同时,按大小排序逆序排序
(4)元组(元组属于有序不可变序列)
tuple(l):将可遍历序列l转换为元组
注意元组只有一个元素时必须为(a,):逗号不能省略
(5)集合(集合属于无序可变序列,元素不重复)
set()!={}:集合初始化要么用set(),要么至少包含一个元素{1}
集合与集合之间只有包含的关系,集合不属于线性结构
a={1},b={1,2}
a.add(3)操作之后a={1,3}
a.update(b)操作之后a={1,2,3}:会添加b中自身不存在的元素
a&b 求交集
a|b 求并集
forzenset():不可变集合
(6)进阶函数
map(function,list):function必须为单参数函数,list必须是可遍历序列
x,y=map(int(),['1’,'2’]):序列解包
list(map(lambda x:x+1,[1,2,]))输出[2,3],(注意map()函数返回的是一个可迭代对象,需要转换为所需序列类型)
filter(function,list):function必须为单参数函数,list必须为可遍历序列
list(filter(lambda x:x>5,[4,5,6]))输出[6]
reduce(function,list):function可以接收多个参数,list必须为可遍历序列
reduce(lambda x,y:x*y,[1,2,3])返回6
lambda:匿名函数,f=lambda x:x+=1 print(f(5))会输出6
(7)所有结构
判断结构
if
if-else
if-elif-else
循环结构(遍历循环,至少执行一次遍历):for i in l:其中l必须为可遍历序列
循环i结构(无限循环,可能出现死循环):while 条件
使用break语句可以跳出最近一层的循环;使用continue会跳出当前当此循环,会回到循环开始处继续执行。
异常处理结构(使用异常结构无法避免逻辑错误)
try:执行部分代码
except:捕捉异常(无异常继续往后执行)
else:如果不引发异常可以执行
finally:不论是否有异常都会执行(但在finally中仍可能引发异常,慎用)
异常通常是在程序运行过程中发生的异常事件,通常由外部问题导致;
错误是指导致系统不能按照用户意图进行工作的一切原因,致使程序无法正常进行;
基本逻辑控制类型:顺序、条件、循环
(8)其他知识点
pytthon特点:通用性好,python语言可以用于几乎任何程序设计相关应用的开发;
语法简洁;生态高产;除此之外还有:跨平台,强制缩进(一般不需要缩进,顶行编写且不留空白;缩进用来表示后续代码与邻近无缩进代码的所属关系;缩进不会增加编程难度),支持中文;在最新的Linux系统中内置有python解释器。
python是一种被广泛使用的高级通用脚本编程语言,不是机器语言,而且是解释执行的,一条一条语句的执行。
高级语言根据计算机执行机制的不同可分为:静态语言和脚本语言;静态语言采用编译方式执行,脚本语言采用解释方式执行。
组合类型:集合,序列,映射(字典)
基本数据类型:整型,浮点型,复数
序列类型是一维元素向量,元素之间存在先后关系,通过下标(序号)访问(字符串、元组、列表)
序列解包:a,b,c=1,2,3等价于a,b,c=(1,2,3)等价于a,b,c=[1,2,3]
pip install/uninstall 库名:安装/卸载第三方库
pip download 包:下载一个包
python常用内置函数:
abs():求绝对值
sum():求和(参数必须是序列类型,且元素必须是可计算类型)
all():当参数中所有值为True时返回True
any():当参数中有一个值为True时返回True
format():格式化函数,格式标记包括:<填充><对齐><宽度><.><精度><类型>
填充常与对其一起使用:^居中对齐,>右对齐,<左对齐
eval():若参数为数据类型或者表达式,可以返回最终计算结果;若为字符串,必须包含两层引号,否则会报错(建议采取异常处理判断)
id():获取对象的内存地址,返回内存地址(一个正整数)
type():返回参数的数据类型
min():返回序列中的最小值(前提是序列中元素可以比较)
max():返回序列中的最大值(前提是序列中元素可以比较)
yield:把一个函数变成一个generater,带有yield的函数不再是一个普通函数,python解释器会将其视为一个可迭代对象。
int('12’,16)等价于18(将一个16进制表示的字符串转换为十进制数)
参数定义规则:
def 函数名(a,b=0,*c,**d):a为位置参数,b为默认参数,c可以传入一串数据(类似一个元组),d可以传入字典(e=0.f=1)
位置参数在前,默认参数,可变长度参数,全局变量在函数内部使用时,必须使用global关键字声明;
使用函数目的:降低编程难度,提高代码复用
缩进指每行语句开始前的空白区域,用来表示程序间的包含和层次关系
全局变量在函数内部使用时,需提前使用保留字global进行声明
局部变量指在函数内部定义的变量,仅在函数内部有定义,当函数退出时,变量将不再存在。在同一个作用域内,局部变量会隐藏全局变量。
函数中return可以多个值,会以元组形式返回;也可以不写,默认返回值为None。
函数默认值在函数定义时确定,如果默认值为列表、字典、集合等可变对象,并且在函数内部通过下标或对象自身的原地操作方法来使用形参,操作的结果会被保存,会影响后续调用。(解决办法,在函数开始加一个判断语句,判断该可变对象长度是否为None,不是就将其置为None)