[問題] 找出sublist在list中出現過的位置

作者: ptero (ptero)   2014-04-24 18:10:58
ex: L = [1, 3, 4, 1, 2, 5, 6, 1, 2, 7, 4, 8, 1, 1, 2]
subL = [1, 2]
我想要找出[1,2]在L出現的位置,像是這題分別是L[3:4], L[7:8], L[13:14]
請問python有比較方便的搜尋方式嗎?
作者: SocketAM2 (AM2)   2014-04-24 19:30:00
容許我練習一下語法...純粹為了寫成單行的話可以這樣[i for i, obj in enumerate(L) if ''.join(map(str,L[i:])).startswith(''.join(map(str, subL)))]這樣簡潔一點 [i for i, obj in enumerate(L) if L[i:i+len(subL)] == subL]
作者: Microscft (小軟哥)   2014-04-24 19:48:00
i for i in range(len(L)) if L[x] == subL[0] andL[x+1] == subL[1]一個變數就可以了 也不需要用到enumerate腦殘了 請把後面的x改成i更好理解->i for i in range(len(L)) if L[i:i+2]==subL
作者: ptero (ptero)   2014-04-27 15:40:00
感謝這個我也有想過兩兩比,但是似乎效能比較差,暴力法XD

Links booklink

Contact Us: admin [ a t ] ucptt.com