python零碎技巧

随笔记录、持续记录

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)#1003次方

import math
math.sqrt(100) #输出10.0 100开平方

pow(100,1/2) #输出10.0 100开平方
pow(100,1/3)#1003次方

列表排序

升序(小到大):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'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值