一、实现二分查找
python中的列表是数组,对于插入是O(n)的复杂度
有一个包bisect,实现插入时查找的二分,但是并没有降低插入时的复杂度。
def bisearch_N_bp(list, x, n):
hi = len(list)-1
lo = 0
while lo <= hi:
mid = (lo+hi)//2
if(abs(list[mid]-x) < n):
return mid
if(list[mid] > x):
hi = mid-1
else:
lo = mid+1
return None
注意等号不能缺少,否则会出现错误。
二、ftplib的使用
from ftplib import FTP
ftp = FTP()
ftp.connect('ftp.ncbi.nlm.nih.gov',21)
ftp.login('anonymous')
ftp.cwd('pubmed/baseline')
fileinfos = ftp.mlsd()
for file, info in fileinfos:
ftp.retrbinary(f"RETR {file}", open(file, "wb").write)
三、三种字符串表示方法, % 、format、f string
>>> "%d" % 1
'1'
>>> "{}".format(1)
'1'
>>> f"{1}"
'1'
四、序列
容器序列:列表,元组等
扁平序列:str,bytes等
容器序列存放的是它们包含对象的引用。