python小操作 黃金搭檔 list和set

2021-08-30 15:45:58 字數 1911 閱讀 7611

今天也是遇到一點工作中的小問題,克服了這個困難之後,讓我對list和set有了更深入的了解~

關於list和set的特性,可以看我往期的文章:pyhon中的資料型別

背景:在deep_sort_yolov3中,在檢測行人的時候,除了可以記錄行人的座標,還可以記錄行人的臨時id,見下圖:

我要做的工作就是在每一幀中把行人的id抓出來,然後放在他的座標資訊的後面,同時把所有的id都放在乙個列表裡,但是列表裡的id每個只能出現一次,如:

[1,2,3,4,5,6,7,8,9,…,234]

最後需要生成的樣式為紅框中的形式:

以下**對應上面的截圖的最後一行文字寫入~

input_tags_set = set(track_id)  #track_id為儲存了所有id的陣列(存在重複id)

tmp = '"framerate":"1","inputtags":"'

f.write(tmp)

len_input_tags = len(input_tags_set)#獲取陣列長度

for i in range(len_input_tags):

if i == len_input_tags-1:如果當前元素是最後乙個元素,就只寫入元素

tmp = str(input_tags_set [i])

f.write(tmp)

else:#如果當前元素不是最後乙個元素,寫入元素加逗號

tmp = str(input_tags_set [i])+','

f.write(tmp)

tmp = '","suggestiontype":"track","scd":false,"visitedframes":,"tag_colors":["#c1ee0c"]}'

f.write(tmp)

大家看上面的**觀察到什麼問題了麼?

我一開始沒意識到,set是不能用索引訪問的,也就是說input_tags_set[i]這樣的寫法是錯的,當時程式就直接報錯:

因為list可以用索引訪問,所以我就想著索性再把set變回list,不就又可以用索引訪問了麼?哈哈我真是太機智了~~

於是現在這段**變成這樣了:

input_tags_set = set(track_id)    #obtain ids once for all

#把list變成set消除重複值,再把set變回list,用索引訪問

python 使用paramiko操作linux

可以利用paramiko模組寫伺服器指令碼,在本地執行,比如持續更新 檢視日誌,批量配置集群等。paramiko 主要包含sshclient和sftpclient兩個元件 ssh服務會話的表示,通常用來執行命令,主要有connect exec command load system host key...

python矩陣操作小例子

因為經常寫for所以感覺有點low而且執行效率不高,慢慢學習改進,這個矩陣操作例子還不錯可以學學。用python實現矩陣的加法運算和乘法運算,寫幾層for迴圈,實現矩陣加法和乘法並不困難,但關鍵是要足夠簡潔,這個可讓我費了不少腦子。先直接上 吧。矩陣表示形式 m a1,a2,a3 a4,a5,a6 ...

併發並行操作基礎小操作 python處理程序執行緒

1.多道作業系統 對於cpu來說,它的計算效率是十分快的,它只有兩種狀態,要麼是在工作,要麼休息,而在乙個程序中,若是存在阻塞,例如進行i o操作,time.sleep 網路通訊有時造成的阻塞和申請緩衝區未被滿足等等時候,這個時候cpu是不用進行計算的,那麼與其任由cpu在這裡休息,不如讓他去處理其...