python中的位置怎么看_【Python编程】如何在一个列表或者字符串中找出某个重复出现元素的所有位置?...

本文介绍了一种Python程序,用于查找列表或字符串中重复元素的所有出现位置。通过使用.index()或.find()方法并进行迭代,可以找到目标元素的所有索引。示例展示了在大型列表和字符串上的应用,程序运行时间仅为62毫秒,证明了其效率。
摘要由CSDN通过智能技术生成

在Python的编程中,我们希望找到某个元素在一个列表或者字符串的位置,通常使用.Index(x)方法,另外也可以对字符串使用.find(x)方法,但是无论是用.index(x)

或.find(x)方法,都只能返回第一个x出现的位置。如果x重复出现,如何能够快速查找处所有x的位置呢?

例如:有一个如下的列表L:

>>> L=range(20)*3

>>> L

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,

15, 16, 17, 18, 19]

如果希望找到所有19出现的位置,我编写如下的程序:

def find_repeat(source,elmt): # The source may be a list or string.

elmt_index=[]

s_index = 0;e_index = len(source)

while(s_index < e_index):

try:

temp = source.index(elmt,s_index,e_index)

elmt_index.append(temp)

s_index = temp + 1

except ValueError:

break

return elmt_index

>>> find_repeat(L,19)

[19, 39, 59]

该程序也可用于字符串,例如:

>>> s= 'ababcdefgadema'

>>> find_repeat(s,'a')

[0, 2, 9, 13]

测试一下函数的运行时间:

import datetime

if __name__ == '__main__':

L = range(int(1e6))*4

t1 = datetime.datetime.now()

index_list = find_repeat(L,19)

t2 = datetime.datetime.now()

print index_list

print "It takes %s"%(t2-t1)

>>>

[19, 1000019, 2000019, 3000019]

It takes 0:00:00.062000

总共花费了62ms,

还不错!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值