1. 列表list操作
排序
2. 文件相關的操作
路徑和文件名分離
文件複製
glob獲取文件絕對路徑
前綴後綴判斷
3. 字符串str操作
分割切片
4. 其他問題
自定義的py文件import後找不到路徑
5. 注意事項
文件命名
6. 一些操作合集
判斷數據類型
集合set
利用bool矩陣進行索引
執行字符串表達式
filter()過濾序列
1. 列 表lis t操 作
排序
注意 :文件夾讀取相關的最好都先排序,否則zip排序出BUG不好找
文件讀取list往往爲亂序的,爲了將img和xml對應,可以對兩個list都採用排序函數
如 img_files.sort(),然後再將兩者zip後進行遍歷。
list.sort( )(返回值爲None, 可傳遞參數reverse=True逆序排序)
sorted( list )
2. 文 件相關的操作
路徑和文件名分離
方法:
os.path.split( )
os.path.splitext( )
例子:
file_path = "D:/test/test.py"
(filepath,tempfilename) = os.path.split(file_path)
('D:/test', 'test.py')
(filename,extension) = os.path.splitext(tempfilename) ('test',
'.py')
文件複製
import shutil
shutil.copyfile('C: \1.txt' , 'D: \1.txt')
glo b 獲 取文件絕對路徑
files = sorted( glob.glob( os.path.join( path, ' *. ' ) ) )
'.'是匹配項,可替換爲.jpg .txt等制定特定類型,,從而簡單獲取特定類型的文件絕
對路徑。 參考鏈接 :https://www.jianshu.com/p/542e55b29324
前綴後綴判斷
str.startswith( 'this' )
str.endswith('.jpg')
3. 字 符串str 操 作
分割切片
在str中去掉字符‘a’:
str.strip('a')
str以所有的 'a' 字符爲界進行切割返回切片,注意'a'也沒有了
str.split('a')
4. 其 他問題
自定義的py文 件im port後 找不 到路徑
多半是 __init__.py 文件文件沒寫或者不對, 入口
5. 注 意事項
文件命名
py文件起名不要和pip package一樣 ,不然運行的時候會報錯,找都找不到(因爲
import的時候會優先從本地import而不是pip)
6. 一 些操作合集
判斷數據類型
isinstance(feature_maps,list)
集合se t
利用好set的操作可以簡化程序,並且加速運算,如交併補差等,參加: set指令大全
但是注意: 集合中的元素不會有重複 !!
a=[ 1,1,2,3,4,5,5]
b=set (a)
b
{1, 2, 3, 4, 5}
利 用bool矩 陣進行索引
(1) i = ( pred [:, 4] > conf_thres ) & ( pred [:, 2:4] >
min_wh ). all (1) & torch .isfinite (pred ). all (1) pred =
pred [i]
(2) class_conf = class_conf [i]
(3)dc = pred [pred [:, -1] == c] # select class c
多說一句,pytorch的torch.where支持很多運算了,實在沒有再用bool判斷(因爲這個可能導致梯度計算的矛盾)
執行字符串表達式
eval()和exec()
使用場景:
1.字符串計算式是無法別識別成我們常用的float型的,所以如配置文件等地讀取出
來是個字符串,使用eval()可以直接將字符串進行計算得到結果。
2.需要在程序中調用執行命令
區別:可以看出,eval和exec相似度很高,都是執行字符串表達式,但是 eval() 是
一個函數,需要變量來接收函數的執行結果;而exec()的字符串內部變量和外界相
同,可以直接執行,返回None.
*號省略變量
單引號爲多變量, ** 爲多元素字典變量,例如:
for i, (*pbox, pconf, pcls_conf, pcls) in enumerate(pred)
特殊:多返回值的忽略
img, *_ = letterbox(img0, new_shape=self.img_size)
filt e r()過 濾序列
filter(function, iterable)
將可迭代對象傳入這個函數,然後內部逐個將迭代器迭代到函數中,返回bool迭代
器。倆字好用,參考 教程(https://www.runoob.com/python3/python3-func-filter.html) 。給個例子:
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)