二级Python
基本语法/概念
- .format
是一个字符串的方法,用于将变量值插入到字符串中,是一种构建动态字符串的方法。语法:formatted_string="字符串{},字符串{}".format(value1, value2),参数的数量要与占位符的数量相等。要按图片上的顺序依次设置
对于类型:b代表二进制,o代表八进制,d十进制,x十六进制,X表示大写的十六进制。如果格式化输出使用`"`填充,为避免与其他引号冲突,需要将引号转义,即`\"`
字符串前面加上小写字母r时,表示原始字符串raw string,不会对反斜杠\进行转义处理,而是被视为普通字符,用途:文件路径、正则表达式,如:
1 | normal_string = "C:\\Users\\Username\\Documents" |
在常规字符串中,反斜杠需要双写以表示正确路径
- 保留字
也称为关键字,被编程语言所保留,不能用作变量名
- 序列sequence
字符串、列表、元组都是序列,可以进行索引和切片的操作,索引可以用负数表示,最后一位从-1开始;切片语法如[2:4],需要指定两个位置,也可以用负数表示。如果要切前几个或者后几个元素,可以省略一个索引,如[2:]。列表和字典的元素可以通过赋值语句改变,但元组和字符串不行。定义元组的时候可以不加圆括号(默认是元组),如果元组只有一个元素,需要带上逗号。
切片的语法:sequence[start:stop:step],step值默认为1。每隔三个取出一个元素组成子序列:[::3];若step为负值,表示反向遍历,倒序输出字符串:[::-1]
sequence支持in的语法,比如用于判断某个元素在不在此序列中;字典也可以用in,用Key进行判断,而不是Value
列表的sort函数:将列表进行重新排序,两个参数:key参数是一个函数,指定了排序的依据,使用lambda函数lambda x: x[1]表示根据每个元素的第二个元素来进行;reserve参数是一个布尔值,True降序,反之升序。ls.sort(key=lambda x:x[1], reserve=True)
- 字典
每个元素都是一个键值对:Key:Value,Value可以是任何类型的对象(可以是另一个字典),而Key必须是可以进行哈希计算的对象,通常是数字或者字符串。字典可以根据键去查找值,如m={‘account’:111},可通过print(m['account'])进行查找。特点就是速度快。同一字典中Key必须唯一,如果不唯一,后者会覆盖前者
操作元素:m={} m["aaa"]=111,若aaa不存在,则添加;若存在,则修改。删除元素:pop方法,如var=m.pop('aaa')返回aaa对应的值,即var=111。clear方法用于清空字典
如果字典想用循环,可以使用items方法,会返回一个类似列表的对象,即for key, value in m.items()用两个变量依次赋值。字典的合并:update方法,m1.update(m2)
keys方法将每个Key构成一个类似列表的对象,print(m.keys());类似的,values就是取出所有value值构成类似列表,都可以用于循环。
如果对字典使用max函数,则只判断键
关于类似列表,都可以使用list方法将其转化为列表,每个键值对将会被转化为元组作为列表元素储存
考点:get方法,用于查找键,和dic[“name”]作用相同,对于后者,如果找不到,会返回KeyError异常,而get可避免此情况,会返回默认值None,可设置,dic.get(“no”, “default”)。细品:d[m]=d.get(m, 0)+1查找m键,若没有,则进行添加,且值设为1,若进行迭代,再查找m,找到一次,值就加1
- 列表生成式
1 | ls = [x**2 for x in range(5)] |
- eval()
执行包含有效python表达式的字符串,并返回表达式的结果。如print(eval("2+3"))输出结果为5。也可理解为把字符串类型转化为int类型
- chr()
将整数型参数按照Unicode编码转换为对应字符
- ord()将字符型按照Unicode编码转化为整数型
1 | print(ord('A')) # 输出:65 |
- complex()用于创建一个复数对象
1 | z1 = complex(3, 2) |
- split()
将字符串切割为子字符串,并返回列表,默认分隔符是空格
- divmod()
1 | # 对10除以3,返回整除结果和余数 |
- id()获取对象的唯一标识符,可以视为该对象在内存中的地址或指针,一般情况不用
1 | # 创建一个列表对象 |
- str.center()用于将字符串的输出居中
1 | text = "Python" |
- round()将一个数值进行四舍五入
1 | # 四舍五入到最接近的整数 |
- 函数参数
1 | # a是普通参数,*b是一个可变参数,允许接受任意数量的额外参数,并作为元组传递给函数 |
可变参数时函数更加灵活,可以在函数内部使用循环来处理元组中的值
- .join()
需要一个可迭代对象作为参数,并在该对象的每个元素之间插入指定字符串,然后把所有元素连接为一个字符串。这里的元素必须也是字符串
1 | my_list = ["apple", "banana", "cherry"] |
- repalce()
用于字符串的替换操作,语法是.repalce(old, new, count)。应用:将输入的123转化为一二三
- strip()
用于删除字符串开头和结尾的空白字符(空格、制表符、换行符)用于清理字符串,也可以指定参数,如str.strip("#")删除指定字符(位于中间的#删不掉)
- range()
返回值是一个可迭代对象,可通过list函数将其转换为列表。列表有append方法,向列表末尾添加单个元素;extend方法添加多个元素(列表);insert用于向指定位置(索引)添加元素,语法是insert(index, element)
- 三次方的表示方法:
n*n*n- n**3
- pow(n, 3)
- 文件读写:
内置open函数,常用的三个参数:file,mode,encoding。mode有三个值:r表示只读,可以使用read函数进行所有内容的读取(如果内容太多,可以指定size参数,表示每次读取的字符串个数,此处涉及到文件指针的概念,再读时会接着往下而不是从头开始读);w写入,然后可以使用write函数写入文本内容(覆盖 重写)如果要把写入的文件存在指定位置,那么这个位置必须要提前存在,此函数只能新建文件,并不能新建文件夹;a追加模式,在已有txt文件的末尾进行补充。encoding默认是系统的编码方式UTF-8。每次使用open函数之后都要使用close关闭
当for循环遍历一个文本文件时。每次迭代会处理一行文本,因为txt文件默认按行进行分割,且字符串包含\n换行符
库及考点

jieba
jieba(结巴)是一个中文文本处理库,用于中文分词,对中文自然语言处理非常重要
运行pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple指定清华源进行安装
函数:jieba.lcut() 精确模式,返回一个列表,用len函数得到列表元数
random
- seed指定种子
- sample(list, k)从list列表中随机选取k个元素,并以列表形式返回
- randint(a, b)生成一个(a, b)范围内的整数
所遇问题
AttributeError: partially initialized module 'jieba' has no attribute 'cut' (most likely due to a circular import)循环导入的问题所导致,不要命名为jieba.py,因为会与库的名称冲突- print连续输出不换行:因为print的end参数默认为’\n’,想要不换行那就print(i, end=’’)