[問題] list 比對查找

作者: momo123163 (RT-boy)   2019-06-20 17:18:31
請教各位神手~
我有兩個list
A:[a,b,c,d,e,f,g]
B:[c,d,e]
想透過查找B內的元素在A的位置,但不用for迴圈有什麼高招嗎?取得:[2,3,4]還拜託各位高手教學了!
作者: KaMiRyuu (_)   2019-06-20 17:46:00
轉set運算,結果在用list.index()找index
作者: as30385438 (LCT)   2019-06-20 17:48:00
把A轉dict,key是值,value是index,這樣就是不用再做O(N)的list.index了
作者: wennie0433   2019-06-20 19:03:00
set(A) & set(B)
作者: liquidbox (樹枝擺擺)   2019-06-20 20:09:00
set(A)&set(B)後取得交集後不是一樣要做迴圈嗎?不解
作者: lemon651 (小明)   2019-06-20 20:50:00
要iterate物件 卻又不用for loop 直接說無解吧 前面說的哪個跟for loop不一樣意思哈哈
作者: as30385438 (LCT)   2019-06-20 21:44:00
不一樣呀,轉成dict只要掃一遍,之後用hashing很快一個是O(M+N),一個是O(M*N)
作者: ides13 (juso)   2019-06-20 21:54:00
print(list(map(lambda x: A.index(x), B)))map算是loop嗎?
作者: jn8029 (宅男8029)   2019-06-21 06:24:00
要iterate 不要for 無解,不管你用啥招術 藏在下面的都會有for. 轉成set有 轉成hash map也有
作者: ides13 (juso)   2019-06-21 21:11:00
確實,map = [a.index(x) for x in b],所以python不常使用map的語法。
作者: kif1205 (轟)   2019-06-22 00:11:00
用while

Links booklink

Contact Us: admin [ a t ] ucptt.com