作者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/cn.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