Python期末复习-易漏知识点总结

191 阅读8分钟
str.center(width[, fillchar])
{返回一个原字符串居中,并使用空格填充至长度 width 的新字符串}
    width -- 字符串的总宽度。
    fillchar -- 填充字符。


注:map()与split()的组合会自动忽略空格
strip() 方法用于移除字符串头尾指定的字符(默认为空格)
eval():直接将字符串当作有效的表达式;执行一个字符串表达式,并返回表达式的值。

格式化输出format
使用end=''可以将前后输出内容连接在一行
print('the length of %s is %d'%(s,len(s)))
    print(f"这是{yearInput}年的第{result + day}天")
    f开头表示在字符串内支持大括号内的python 表达式

⚠️注意:像 insert ,remove 或者 sort 能够修改列表中元素的方法,
没有打印出返回值(它们返回默认值 None ,这是Python中所有可变数据结构的设计原则)。


将索引视作指向字符之间 ,第一个字符的左侧标为0,最后一个字符的右侧标为n,其中n是字符串长度。
# +---+---+---+---+---+---+
# | P | y | t | h | o | n |
# +---+---+---+---+---+---+
# 0   1   2   3   4   5   6
注意:切片的开始总是被包括在结果中,而结束不被包括 <range()与之相同>。这使得s[:i] + s[i:]总是等于s


序列类型:str list tuplein | not in | 切片 | len | * | + | min | max | index | count 】
str tuple ->list(list()函数)
list 【append | clear | copy | insert | pop | remove(删除第一个元素) | reverse(反转)】
tuple list dict ->(使用for in)
set 【add | clear | pop | remove | discard(不报错) | len | in | not in】
--------------------------------------------------------------------------------
        |  列表list | 元组tuple  |集合set  | 字典dict
是否有序 |          是           |        否
可否重复 |          是           |  否     |   否(键)
切片/索引|          支持         |        不支持
是否可变 |  可变     |   不可变    |       可变
添加    |  append  |      /     |   add   |  d['k']='V'
-----------------------------------------------------------------------------------

append():在list的最后加入一个元素
    extend():在list的最后加入一个列表
insert():在list的某个位置加入一个元素
remove():删除list中的特定元素
pop():移除list最后一个元素
根据索引值进行修改
index():查询某元素的在列表中的位置(索引)
in:查询某元素是否在列表中
    列表中用到:index(), in
    字符串中用到:find(), count(), in

    使用find()时,若查询的元素存在,返回首次出现的位置索引;若不存在,返回 -1
    使用count()时, 若查询元素出现,返回出现次数;若未出现,返回 0
    使用in时,返回值为TrueFalse

语法:list_name [start_index : stop_index : step]
lit=[[0 for i in range(10)] for j in range(10)] 二位列表

sort() / sorted() 顺序
sort()会改变原列表顺序
    sorted()不会改变原列表顺序,它会返回一个排序后的版本,需创建一个变量来接收返回值
reverse() / reversed() / sort() / [::-1] 反转 / 倒序
reverse()会改变原列表顺序
    使用set(),因集合中没有重复的元素

列表 --> 字符串:join()
# 以逗号和空格结合列表中的元素,将其变为一长串字符串
course_str = ', '.join([])

字符串 --> 列表:split()
    使用split()将字符串重新变换为列表
列表推导式:结果是一个新列表
对于可迭代对象,可以直接用sum(), max(), min()方法来进行快速计算
courses[0] = 'Art'			# ❌错误: 元组内元素为只读,不可更改

# 交集(共有的元素)
print(cs_courses.intersection(art_courses))
# 不同(独有的元素)
print(cs_courses.difference(art_courses))
# 并集(所有的元素)
print(cs_courses.union(art_courses))

new_dic=sorted(dic.items(),key=lambda item:item[1],reverse=True) 转换为元组 【从大到小】

⚠️注意: 字典按值排序后返回值是元素为集合的列表,每个集合即为原字典中的一个键值对。
可以将字典看做一个自定义索引(index)的列表
    列表中的某个元素可以表示为:list[index]
    字典中的某个值可以表示为:dict[key]
# 使用update可以一次更新多个值!!!
→get返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值。
    括号内第二个参数为自定义默认输出内容
   print(student.get('phone', 'Sorry. Not Found~'))

❤zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,
然后返回由这些元组组成的列表
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
 # 元素个数与最短的列表一致
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]


# 删除 方法一:使用del
# 删除 方法二:使用pop
# pop会删除该值,但也会同时返回删除的值,
# 查看长度
print(len(student))
# 查看键
print(student.keys())
# 查看值
print(student.values())
# 成对展现键与值print(student.items())

# 以键循环
for key in student:
    print(key)
# 键、值循环
for key, value in student.items():
    print(key, value)

函数参数中arg表示:传入的一个参数
函数参数中有单星号的*args 表示:将参数以元组的形式导入(不限个数)
函数参数中有双星号的**kwargs 表示:将参数以字典的形式导入(不限个数)

判断是否为数字:isdigit();
判断是否为字母:isalpha()
是否为大写字母:isupper();
是否为小写字母:islower()
判断是否为空格:isspace()
isdecimal()来判断是否为整数
检测字符串是否只由数字组成:isnumeric()
lower() 方法转换字符串中所有大写字符为小写。
upper() 方法将字符串中的小写字母转为大写字母。

使用encode()方法
☆ASCII码与字符的互换:使用ord()字符 --> ASCII 与chr()ASCII --> 字符
ord(":")==58
判断某个字符(串)是否属于另一个字符串:
# 方法一:使用find()
# 如果字符串1包含字符串2,返回字符串2在1中的起始索引
# 如果不包含,则返回❀'-1'❀
# 方法二:使用count()
# 若出现,返回出现次数;若未出现,返回0
# 方法三:使用in
# 返回值为'True'或'False'

# 由此可知,replace并不改变原字符串。故需要创建新变量来接收

使用dir()或help()来查询方法该如何使用( dir()能显示括号内变量所有操作的函数、方法)
# help()能显示某函数/方法的具体用法,括号内不能是变量名
# 查询具体的某函数/方法
print(help(str.lower))

random.choice()从序列中随机返回一个元素
random():返回一个在区间[0.0, 1.0)的随机浮点数
randint(a, b):返回一个在区间[a, b]的随机整数,相当于randrange(a, b+1)
randrange(start, stop[, step]):从 range(start, stop, step) 返回一个随机选择的元素
④. seed():获取某种特定生成的随机数
当seed()无参数时,每次生成的随机数不同,
当seed()有参数时,若参数相同,则每次生成的随机数相同;若参数不同,则生成的随机数也不同
# 注意⚠️:randint与range取值范围的区别。前者能取右侧的值,后者不能

⑤. shuffle():将一个序列(列表、字符串或元组)的顺序打乱
from datetime import date
day = date.today()获取今天的日期

四年一闰;百年不闰,四百年再闰
①非世纪年能被4整除,且不能被100整除的是闰年。(如2004年是闰年,1901年不是闰年)
②世纪年能被400整除的是闰年。(如2000年少闰年,1900年不是闰年)

'//'为整除运算

#文件
文件的使用方式:打开-操作-关闭
文本文件&二进制文件,open( , )和.close()
文件内容的读取:.read() .readline() .readlines()
read()若无参数,则读取到文件结尾,返回字符串对象
☆(常用)readline()读出一行,占用内存小,返回字符串对象
readlines()读取整行,保存在一个列表中,每行为一个元素,读取较大文件时占用内存

数据的文件写入:.write() .writelines() .seek()
seek() 方法用于移动文件读取指针到指定位置。
0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。


(常用)r:只读
(常用)w:清空写入(不读)
a:追加写入(不读)
w+:读并且清空写入
r+:读且从文件开头写入
(常用)a+:读且从末尾追加写入
f = open(“f.txt”) 文本形式、只读模式、默认值,等于f = open(“f.txt”,“t”)
f = open(“f.txt”, “rt”) 文本形式、只读模式、同默认值
f = open(“f.txt”, “w”) 文本形式、覆盖写模式
f = open(“f.txt”, “a”) 追加写模式,文件不存在则创建,存在则在文件最后追加内容,不能读取
        ***f = open(“f.txt”, “a+”) 文本形式、末尾追加写模式+ 读文件
        f = open(“f.txt”, “r+”) 文本形式、开头追加写模式+ 读文件
f = open(“f.txt”, “x”) 文本形式、创建写模式,存在则返回FileExistsError
f = open(“f.txt”, “b”) 二进制形式、只读模式
f = open(“f.txt”, “wb”) 二进制形式、覆盖写模式

        header=next(fr)返回文件的下一行,读取csv文件时使用
✍(常用)with open('text.txt','r') as f:
    print(f.read())

tf = open(“f.txt”, “rt”)
print(tf.readline())
tf.close()

zfill(width)函数返回指定宽度的新字符串
 ljust() 方法返回一个原字符串左对齐,并使用空格填

round() 方法返回浮点数x的四舍五入值
        def numlist():
            return [x for x in range(1,27)]
        def charlist():
            return [chr(x) for x in range(ord("A"),ord("Z")+1)]
        print(dict(zip(numlist(),charlist())))

处理csv文件
 list_ans=["学号","考核成绩"]
    fw.write(",".join(map(str,list_ans))+"\n")

先写入学号,在一行,但是写入成绩之后,就会变成两列【技巧】
fw.write("".join(map(str,row_list[0]))+",")
fw.write(str(res_score)+"\n")

isinstance函数判断变量是否为指定的类型