datetime 库
import datetime
#设置时间
start = datetime.date(1901,1,1)#不算这一天 是从1900,12,31开始的
end = datetime.date(2001,1,1)#到2000,12,31
start += datetime.timedelta(days=1)
#print(end-start)
#print(start.weekday())#返回周几,它使用datetime类对象,并以整数形式返回星期几,其中Monday是0,Sunday是6。它是一个实例方法,即,它适用于该类的实例。
#print(end.weekday())
#print(start.day)#返回几号
数组切片
左边是闭区间,右边是开区间
s[i:j] 表示获取a[i]到a[j-1]
s[:-1]去掉最后一个字符
s[:-n]去掉最后n个字符
s[-2:]取最后两个字符
s[i:j:k]这种格式呢,i,j与上面的一样,但k表示步长,默认为1
s[::-1]是从最后一个元素到第一个元素复制一遍(反向)
数字格式化
{:.2f} #保留小数点后两位
{:.0f}#不带小数
{:.2%}#百分比格式 25.00%
{:.0f}%#百分比格式 25%
#print ("{:.0f}%".format("25"))
collections Counter
collections.Counter()
Counter 计数
Counter 是一个 dict 的子类,用于计数可哈希对象。
字符串
from collections import Counter
c = Counter()
for i in 'sfsadfsdjklgsdla':
c[i] += 1
print(c) # Counter({'s': 4, 'd': 3, 'f': 2, 'a': 2, 'l': 2, 'j': 1, 'k': 1, 'g': 1})
c2 = Counter('asfjslfjsdlfjgkls')
print(c2) # Counter({'s': 4, 'd': 3, 'f': 2, 'a': 2, 'l': 2, 'j': 1, 'k': 1, 'g': 1})
列表
c = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(c) # Counter({'blue': 3, 'red': 2, 'green': 1})
进制转换
"""
bin(x)返回 2 进制字符串。
oct(x)返回 8 进制字符串。
hex(x)返回 16 进制字符串。
int(n, x) 将n转换为x进制的数
"""
2进制
bin(int(x, 8))
bin(int(x, 10))
bin(int(x, 16))
8进制
oct(int(x, 2))
-
oct(int(x, 10))
oct(int(x, 16))
10进制
int(x, 2)
int(x, 8)
-
int(x, 16)
16进制
hex(int(x, 2))
hex(int(x, 8))
hex(int(x, 10))
-
hex(num)表示将十进制的数转换为十六进制,转换完成后八进制数前有0x前缀,使用[2:]从第三位开始取值,从而去掉0x
大小写转换
#upper() 方法将字符串中的小写字母转为大写字母。
#lower():所有字母小写
upper()方法语法:
str.upper()
str.lower()
对于一些矩阵的题目来说,往往从第二行开始计算
字符串转化为数字
n = input()
int(i) for i in str(n)
sort和sorted
list.sort(cmp=None, key=None, reverse=False)
#cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
#key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
#reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
排列函数permutations
'''排列函数permutations(按元素的位置顺序输出元素的排列,字典序:
字典序(dictionary order),又称 字母序(alphabetical order),原意是表示英文单词在字典中的先后顺序,在计算机领域中扩展成两个任意字符串的大小关系。
英文中的 字母表(Alphabet) 按照如下的顺序排列:
ABCDEFG HIJKLMN OPQRST UVWXYZ
abcdefg hijklmn opqrst uvwxyz
)'''
from itertools import permutations
a = 'abc' #对字符串进行permutations排列组合
for i in permutations(a,3):#3是指将其中3个元素任意组合,如果是2,则是任意2个元素组合
x = ''.join(i)
print (x,end=' ')
#abc acb bac bca cab cba
math
from math import comb
comb(n, k)#返回不重复且无顺序地从 n 项中选择 k 项的方式总数
math.gcd(*integers)
gcd(a,b)#求a,b的最大公约数
a*b//gcd(a,b)#求a,b的最小公倍数
哈希表和字典
enumerate(sequence, [start=0])#同时列出数据下表和数据
d = {key1 : value1, key2 : value2, key3 : value3 }
print(d[key1])# values1
del d[key2] # 删除键key2
d.clear() # 清空字典
del d # 删除字典
len(dict)#计算字典元素个数,即键的总数。
str(dict)#输出字典,可以打印的字符串表示。
dict.get(key[, value])
print ("key1 : ", d.get(key1))#value1
d={1:[1,10,199],3:[2,9,16]}
d.items()
含义:返回字典中的键值对列表。
d.items()返回包含键值对的元组列表。每个元组中的第一项是键,第二项是键的值。
list(d.items()) =[(1, [1,10,199]), (3, [2,9,16])]
for o in d.items():
ids, ts_ = (i for i in o) # ids是1,3...号, ts_是[1,10,199],[2,9,16]
ts_ = sorted(ts_)
print(ids,ts_)#1 [1,10,199] 3 [2,9,16]
d.keys()
含义:返回字典中的键列表。
d.values()
含义:返回字典中的值列表。
分数
Fraction分数模块
#求1+1/2+1/4+1/8+⋯1/2**19的和
from fractions import Fraction#插入分数模块
sum = 1
for i in range(1,20):
#输入分数时,Fraction开头字母必须大写,否则会报错。
sum+=Fraction(1,2**i)#表示1/2+......+1/2^19
print(sum)#1048575/524288
求n以内的质数
m=[]
for i in range(1,n):
if i>1:
for j in range(2,i):
if i%j==0:
break
else:
m.append(i)
常见数据类型
int,bool,str,list,tuple,dict,set,float,None
#哪些能转化成布尔值为False:空,None,0
#可变和不可变划分,可变的有哪些:list,set,dict
#可哈希和不可哈希,不可哈希的有哪些:list,set,dict
#字典的键/集合的元素,必须是可哈希类型