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

看板Python作者 (ptero)時間11年前 (2014/04/24 18:11), 編輯推噓1(1011)
留言12則, 3人參與, 最新討論串1/2 (看更多)
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有比較方便的搜尋方式嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.199.229 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1398334261.A.B68.html

04/24 19:30, , 1F
容許我練習一下語法...純粹為了寫成單行的話可以這樣
04/24 19:30, 1F

04/24 19:30, , 2F
[i for i, obj in enumerate(L) if ''.join(map(str,
04/24 19:30, 2F

04/24 19:31, , 3F
L[i:])).startswith(''.join(map(str, subL)))]
04/24 19:31, 3F

04/24 19:33, , 4F
這樣簡潔一點 [i for i, obj in enumerate(L) if L[i:i+
04/24 19:33, 4F

04/24 19:33, , 5F
len(subL)] == subL]
04/24 19:33, 5F

04/24 19:48, , 6F
i for i in range(len(L)) if L[x] == subL[0] and
04/24 19:48, 6F

04/24 19:48, , 7F
L[x+1] == subL[1]
04/24 19:48, 7F

04/24 19:49, , 8F
一個變數就可以了 也不需要用到enumerate
04/24 19:49, 8F

04/24 19:50, , 9F
腦殘了 請把後面的x改成i
04/24 19:50, 9F

04/24 20:07, , 10F
更好理解->i for i in range(len(L)) if L[i:i+2]==subL
04/24 20:07, 10F

04/27 15:40, , 11F
感謝
04/27 15:40, 11F

04/27 17:07, , 12F
這個我也有想過兩兩比,但是似乎效能比較差,暴力法XD
04/27 17:07, 12F
文章代碼(AID): #1JMECrje (Python)
文章代碼(AID): #1JMECrje (Python)