gpt4 book ai didi

python - Python列表中可被 'n'整除的重复元素的最大索引

转载 作者:行者123 更新时间:2023-11-28 21:04:12 25 4
gpt4 key购买 nike

我有一个排序的数字列表,例如:

a = [77,98,99,100,101,102,198,199,200,200,278,299,300,300,300]

我需要找到每个值的最大索引,它可以被 100 整除。

输出应该是这样的:4,10,15

我的代码:

a = [77,98,99,100,101,102,198,199,200,200,278,299,300,300,300]
idx = 1
for i in (a):
if i%100 == 0:
print idx
idx = idx+1

以上代码的输出:

4
9
10
13
14
15

最佳答案

为了防止人们好奇,我将字典理解技术与反向迭代技术进行了基准测试。字典理解大约是速度的两倍。更改为 OrderedDict 会导致速度大幅下降。比听写理解慢大约 15 倍。

def test1():
a = [77,98,99,100,101,102,198,199,200,200,278,299,300,300,300]
max_index = {}
for i, item in enumerate(a[::-1]):
if item not in max_index:
max_index[item] = len(a) - (i + 1)
return max_index

def test2():
a = [77,98,99,100,101,102,198,199,200,200,278,299,300,300,300]
return {item: index for index, item in enumerate(a, 1)}

def test3():
a = [77,98,99,100,101,102,198,199,200,200,278,299,300,300,300]
OrderedDict((item, index) for index, item in enumerate(a, 1))

if __name__ == "__main__":
import timeit
print(timeit.timeit("test1()", setup="from __main__ import test1"))
print(timeit.timeit("test2()", setup="from __main__ import test2"))
print(timeit.timeit("test3()", setup="from __main__ import test3; from collections import OrderedDict"))

3.40622282028
1.97545695305
26.347012043

关于python - Python列表中可被 'n'整除的重复元素的最大索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com