作者mikapauli (桜花)
看板Python
標題Re: [問題] 找出sublist在list中出現過的位置
時間Fri Apr 25 21:20:27 2014
#練習寫寫看
def indices(
text,
string):
result = []
ind =
text.find(
string)
nextfind =
ind + 1
while
nextfind:
result.append(
ind)
text =
text[
nextfind:]
nextfind =
text.find(
string) + 1
ind +=
nextfind
return tuple(
result)
def find_seq(
main,
sub):
main_str = ', ' + str(
main)[1:-1]
sub_str = ', ' + str(
sub)[1:-1]
return tuple(map(indices(
main_str, ',').index, indices(
main_str,
sub_str)))
'''
>>> L = [1, 3, 4, 1, 2, 5, 6, 1, 2, 7, 4, 8, 1, 1, 2]
>>> subL = [1, 2]
>>> find_seq(L, subL)
(3, 7, 13)
'''
--
「……私も、…っ、
母様の娘に生まれて…
母様とこれまでともに過ごしてきて…
本当に、
幸せでございました…っ!!」
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.97.61
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Python/M.1398432032.A.BAB.html
1F:→ mikapauli:想法是用字串內建的搜尋,希望能有較好的效率 04/25 21:24
2F:推 tiefblau:while 那句的條件看不太懂 04/25 22:06
3F:→ tiefblau:text=text[search+1:] 感覺這句每次都會產新的list? 04/25 22:08
4F:→ mikapauli:第一個函式的text需要是str,因為用了find 04/25 22:27
5F:→ mikapauli:用find搜尋失敗會傳回-1,亦即search+1為0時結束while 04/25 22:31
6F:→ uranusjr:上色推 04/25 22:38
7F:推 darkgerm:蠻有趣的做法~XD 04/25 22:40
8F:推 tiefblau:!=-1不是比較好懂嗎..好吧 我只能說 幸好我們沒在合作 04/25 23:10
9F:→ mikapauli:有道理,改寫一下。 04/26 00:57
※ 編輯: mikapauli (42.64.10.134), 04/26/2014 01:21:48
10F:→ Microscft:么壽 為什麼要搞成這樣 04/26 02:34
11F:→ Microscft:這應該過兩個月連你自己也忘記是要做什麼的吧 04/26 02:34
12F:推 ptero:請問這效率高很多嗎? 04/27 17:34
13F:→ mikapauli:不知道,有沒有人要time一下! 04/27 19:19
14F:→ mikapauli:另外若需要對同一個list搜尋多個不同的sublist, 04/27 19:24
15F:→ mikapauli:可以把indices(main_str, ',')存起來不用重覆計算。 04/27 19:25