目录
类和对象
class student: # 属性 x='hello' # 初始化方法,初始化一个对象 def __init__(self,name,class_idx): #self参数一定要有 # 属性 self.name=name self.class_idx=class_idx A=student("小明","一班") print(A.name,A.class_idx) # 小明 一班
class student: # 属性 x='hello' # 初始化方法,初始化一个对象 def __init__(self,name,class_idx): #self参数一定要有 # 属性 self.name=name self.class_idx=class_idx def output(self): print("打印当前对象的内部信息") print(self) print(self.name,self.class_idx) A=student("小明","一班") print("外部打印信息") print(A) print(A.name,A.class_idx) print('-'*10) A.output() # 外部打印信息 # <__main__.student object at 0x000001A4AE7A7ED0> # 小明 一班 # ---------- # 打印当前对象的内部信息 # <__main__.student object at 0x000001A4AE7A7ED0> # 小明 一班
属性和方法
class student: # 属性 sex_list=['boy','girl'] # 类方法 @classmethod def get_sex_list(cls): #cls和self异曲同工 #cls对应的是整个class,self对象的是某个对象 return cls.sex_list def __init__(self,name,sex,class_idx): self.name=name self.sex=sex self.class_idx=class_idx print(student.get_sex_list()) #通过类方法获取类属性sex_list # ['boy', 'girl']
魔术方法:pyzh.readthedocs.io
模块
常用内置函数
# 输入参数:a,b # 返回值:gcd # 最大公约数:gcd(a,b)=gcd(b,a%b) def gcd(a, b): r=a%b while r !=0: a=b b=r r=a%b return b # 最小公倍数: # 性质:gcd(a,b)*lcm(a,b) = a*b def lcm(a, b): return a*b//gcd(a, b) # 判断是否为质数 # 只需要判断2~sqrt(x) def is_prime(x): if x<=1: return False m=int(x**0.5) for i in range(2,m+1): if x%i==0: return False return True a, b = list(map(int, input().split())) print("gcd({},{})={}".format(a,b,gcd(a,b))) print("lcm({},{})={}".format(a,b,lcm(a,b))) c=int(input()) print(is_prime(c))
自定义排序
按照绝对值大小排序:
按照二元组的两数之和大小来排序:
list的sort:
list.sort的自定义:
二分查找
bisect模块:维护一个已排序列表,支持二分查找、二分插入
from bisect import * a=[1,1,2,2,2,4,7] x=3 print('x={},a中查找的第一个位置是:{}'.format(x,bisect_left(a,x))) x=2 print('x={},a中查找的第一个位置是:{}'.format(x,bisect_left(a,x))) x=2 print('x={},a中查找的最后一个位置是:{}'.format(x,bisect_right(a,x))) x=10 print('x={},a中查找的最后一个位置是:{}'.format(x,bisect_right(a,x))) # x=3,a中查找的第一个位置是:5 # x=2,a中查找的第一个位置是:2 # x=2,a中查找的最后一个位置是:5 # x=10,a中查找的最后一个位置是:7