看板 Python 關於我們 聯絡資訊
例 A= [1,2,3,4] B= [5,6,7,8] C= [1,3,4,5,7] 然後我需要A和C比對, 如果一樣就顯示相對於A同位置的B, A和B的個數都是一樣的 例如 A[3] = C[2] ,然後顯示B [3] 小弟目前只會笨笨的用迴圈去比對, 但是資料量一大的話就會很久 請問有大大有更好的方法嗎? 例 for i,j in zip(A,B): for k in C: If i==k: Print(j) ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.69.100 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1599950908.A.4F3.html
SocketAM2: 中間兩行換成 if i in C:09/13 07:00
SocketAM2: 數量很大的話還可以把C先做成set09/13 07:06
※ 編輯: oneonesix (39.9.69.100 臺灣), 09/13/2020 07:30:23
remia81: numpy.array(B)[numpy.isin(A,C)]或list comprehension 09/13 08:08
remia81: 包起來[B[n] for n,i in enumerate(A) if i in C] 09/13 08:08
lemon651: 有個東西叫map 09/13 10:21
Pieteacher: 併起來 用 dataframe 的 duplicated() 09/13 11:52
LP9527: 資料量大指的是c多以外,ab也很多嗎 09/13 13:30
oneonesix: 大量指ABC都約四萬筆左右 09/13 18:26
oneonesix: 感謝各位大大分享方法 09/13 18:54
germun: B不用包進loop吧 記index就好 然後值會不會重覆也要考慮 09/13 19:12
hsnusonic: 同一樓,先把C變set會比較快 09/14 01:34
ro9956882: 好set直接把O(n^2)變O(n) 不用嗎 09/14 02:41
tacovirus: 不管多努力都贏不過平行運算 09/20 13:33