随笔记录、持续记录
1 变量变字符串
list_test = []
for i in range(14):
list_test.append('lines'+'_'+str(i))
for i in list_test:##变量变字符串
globals()[i] = 'a'
print(list_test)
print(lines_13)
结果
['lines_0', 'lines_1', 'lines_2', 'lines_3', 'lines_4', 'lines_5', 'lines_6', 'lines_7', 'lines_8', 'lines_9', 'lines_10', 'lines_11', 'lines_12', 'lines_13']
a
2021.4.15菜鸟备战蓝桥杯python组
一些常规操作,给自己考前复习,非算法。
进制间的转换
转成a类型,就用a类型的英文名做函数
十进制转二进制:bin(20) output:'0b10100'
十进制转八进制:oct(20) output:'0o24'
十进制转十六(hexadeca)进制:hex(20) output:'0x14'
可以通过切片取数值[2:]
二进制转十进制:int('0b10100',2) output:20
八进制转十进制:int('0o24',8) output:20
十六(hexadeca)进制转十进制:int('0x14',16) output:20
不用pandas去读取txt、csv
with open(file,‘r’) as f 操作
txt
with open('test.txt','r') as f:
data = f.read()
print(type(data))
//<class 'str'>
print(data)
//202002
//000020
//002022
//000000
//000020
//000000
//实际上data长这样:'202002\n000020\n002022\n000000\n000020\n000000'
with open('./test.txt','r') as f:
data = f.readlines()
print(type(data))
//<class 'list'>
print(data)
//['202002\n', '000020\n', '002022\n', '000000\n', '000020\n', '000000']
csv
with open('test2.csv','r') as f:
data = f.read()
print(type(data))
//<class 'str'>
print(data)
//PassengerId,Survived,Pclass,Name
//181,0,3,"Sage, Miss. Constance Gladys"
//405,0,3,"Oreskovic, Miss. Marija"
//635,0,3,"Skoog, Miss. Mabel"
//701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)"
//470,1,3,"Baclini, Miss. Helene Barbara"
//400,1,2,"Trout, Mrs. William H (Jessie L)"
//481,0,3,"Goodwin, Master. Harold Victor"
//44,1,2,"Laroche, Miss. Simonne Marie Anne Andree"
//446,1,1,"Dodge, Master. Washington"
with open('test2.csv','r') as f:
data = f.readlines()
print(type(data))
//<class 'list'>
print(data)
//['PassengerId,Survived,Pclass,Name\n',
// '181,0,3,"Sage, Miss. Constance Gladys"\n',
//'405,0,3,"Oreskovic, Miss. Marija"\n',
//'635,0,3,"Skoog, Miss. Mabel"\n',
//'701,1,1,"Astor, Mrs. John Jacob (Madeleine Talmadge Force)"\n',
//'470,1,3,"Baclini, Miss. Helene Barbara"\n',
//'400,1,2,"Trout, Mrs. William H (Jessie L)"\n',
//'481,0,3,"Goodwin, Master. Harold Victor"\n',
//'44,1,2,"Laroche, Miss. Simonne Marie Anne Andree"\n',
//'446,1,1,"Dodge, Master. Washington"\n']
A-Z(a-z)的ASCII码,及chr、ord转换
0-9阿拉伯数字的ASCII码:48~57
A-Z的ASCII码:65-90
a-z的ASCII码:97-122
记不住没关系,记住ord和chr函数,比赛的时候输出看看就行
print(chr(65)) output:A
print(chr(90)) output:Z
print(ord('a')) output:97
print(ord('z')) output:122
用range遍历记得要+1
无向图边个数的计算
设顶点个数为:n
最少边个数为:n-1
最多边个数为:n*(n-1)/2
全局变量
在def中使用global,可能在dfs中用到,可避免一些参数调用
列表合并
lista + listb即可
[0]*n = [0,0,0…n个]
删除列表中的重复元素
list(set(list))
这种情况下,list要可排序的,结构体的不能使用,例如[[1,2],[3,4],[5,6]]
取整
向下取整:int(3.75) = 3 10 // 3 = 3
向上取整:math.ceil(3.25) = 4.0
取余
5%2 = 1
四舍五入
直接用round() 有时候是会报错的,因为python设置的四舍五入还要分单双数的
使用print(’{:.2f}’.format(number)) 四舍五入并保留2位小数
n 次方 & 开n次方
pow(100,3)#100的3次方
import math
math.sqrt(100) #输出10.0 100开平方
pow(100,1/2) #输出10.0 100开平方
pow(100,1/3)#100开3次方
列表排序
升序(小到大):list.sort()
倒序(大到小):list.sort(reverse = True) #reverse的翻译就是倒序
列表删除元素
移除列表中一个元素并赋值给一个变量:a = list.pop(0)
删除列表中的一个元素:del list[0]
取列表最大值及其下标
最大值:max(list)
最大值下标:list.index(max(list))
列表与字符串间的转换
list -> str : str = “”.join(list)
str -> list : list = list(str)
二叉树的先序、中序、后序排列
这个先中后特指根节点的读取顺序:
先序遍历意思是,先读根节点,再读左节点,最后读右节点
中序遍历意思是,先读左节点,根节点第二读,最后读右节点
后序遍历意思是,先读右节点,再读左节点,最后读根节点
给出先序和中序遍历,如何得到后序遍历?或者给出先、后序,求中序?
月份的记忆
就是遇到过这样的懵逼常识题目
口诀:1、3、5、7、8、10、腊(12)三十一天永不差
再去判断是否润年对2月天数进行计算:能被4或者400整除;不能被100整除。
其他月份都是30天
排列组合公式
n为元素总数,m为参与排列组合个数
排列:
A(n,m)=n×(n-1)…(n-m+1)=n!/(n-m)!
组合:
C(n,m)=n!/m!(n-m)!
计算阶乘n!
import math
math.factorial(n)
python 排列组合有直接的函数
from itertool import *
#排列
s = 'pailie'
pailie = list(permutations(s))#一定要list,不然会返回一个迭代器地址
#字符串全排列,要注意字母相同的情况,例如’pailie‘有两个'i',全排列后应该除以二,删除重复的!
s2 = 'zuhe'
zuhe = list(combinations(s2))
日期累加 年月日
import datetime
year = 2020
month =02
day = 02
start = datetime.date(year,month,day)
delta = datetime.timedelta(days=1)
newtime = start+delta
print(newtime)
#2020-02-03
#type = <class 'datetime.date'>
print(str(newtime))
#2020-02-03
#type = <class 'str'>