- python中的持续化存储pickle
有些时候数据分析或者处理得到了一批处理后的数据,不论是列表还是其他的类型的数据,但是又没有必要特地去建一个数据库数据表或者建立csv文件进行存储,可以使用pickle模块进行数据的存储
import pickle
'''
preprocessing ...
#假设进行深度学习中数据预处理得到了X和Y,分别表示数据集标签集
'''
X = [....]
Y = [....]
data_file_path = 'data.data' #保存的pickle数据文件路径,后缀名只是一个形式
label_file_path = 'label.data'
with open(data_file_path,'wb') as f: # 使用二进制进行写入
pickle.dump(X, f) #dump函数表示将数据倒入文件中
with open(label_file_path,'wb') as f:
pickle.dump(Y, f)
-----------------------------------------------------------------------------
with open('data.data', 'rb') as f: #二进制读取数据
X = pickle.load(f) # load函数表示将装载文件中数据到变量X中
with open('label.data', 'rb') as f:
Y = pickle.load(f)
- 导入模块后,可以使用
dir(module_name)
来查看模块中的函数(这一点对之后编写项目很有帮助)
import math
print(dir(math))
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__',
'acos', 'acosh', 'asin',....(未显示完全) ]
def get_extension(file_path):
dot = file_path.rfind('.')
# str.rfind(str, beg=0 end=len(string)) 返回字符串最后一次出现的位置,如果没有匹配项则返回-1。
if dot == -1:
return ''
else:
return file_path[dot+1:]
food = ' apple pie'
food[-3:0] 输出?
答案: ''
原因: 从下标-3向右找不到下标0,所以为空字符串
- 自引用列表,从这个方面我们可以理解到列表中的元素并不是包含其值,而是指向某一个值
fruits = ['apple','pear', 'banana']
fruits[1] = fruits
fruits #输出 ['apple', [...], 'banana']
fruits[1] # 输出 ['apple', [...], 'banana']
[...] 表示的意思为python能够自动识别自引用,而不会傻傻的一直迭代打印列表
import time
from tqdm import tqdm
# tqdm是进度条中的的一个方法,里面存一个可迭代对象
for i in tqdm(range(1, 100)):
# 执行任务
time.sleep(0.01)
- python中的isinstance(object,type) 和 type(object) 辨析
>>> issubclass(bool,int)
True
>>> isinstance(True, int)
True
>>> if type(True) == bool:
... print('this is bool')
...
this is bool
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
=> bool是int的子类
True False 如果进行instance判断的话 也是可以判断成int的
衍生出来的一个妙用
a = [True,True,True,False]
sum(a) = 3
- 关于取模和取余的区别
取余:rem(a,b) -> 尽可能让商向0靠近
取模:mod(a,b)->尽可能让商向负无穷靠近
因此:
python中的规定:
Python 中取模运算 % 结果与除数同符号
>>> 7%-3
-2
>>> -7%3
2
def add(x,y):
return x+y
def add(x:int, y:int) -> int:
return x + y
- 小常识
形式参数: formal parameter
实际参数: actual argument
网友评论