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