[问题] 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