gpt4 book ai didi

python - 计算列表中重复前导整数数量的最快方法

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:07 25 4
gpt4 key购买 nike

正在查看的列表示例(列表将始终排序)。列表的大小为 4^12。[1,1,1,1, ...... , 1,1,4]

目前我有一个 for 循环,它使用一个计数器遍历列表,直到找到第一个非 1,然后中断并返回计数器。这比使用计数函数更快,因为列表已经排序。我现在正在实现二进制搜索,我想知道是否有人能想出一种更好的方法来计算有序列表中领先的数量。

最佳答案

Bisect内置并且看起来比二进制排序快;

import bisect
import time

import itertools

test = [1] * 100000000
test[len(test) - 1] = 4

start = time.time()
print(bisect.bisect_right(test,1))
print(time.time() - start)

start = time.time()
runs = [len(list(b)) for a, b in itertools.groupby(test)][0]
print(runs)
print(time.time() - start)

start = time.time()
length= len(test)-test[::-1].index(1)
print(length)
print(time.time() - start)


# Bisect
99999999
3.719329833984375e-05

# GroupBy
99999999
1.2406058311462402

# Length
99999999
0.3920767307281494

关于python - 计算列表中重复前导整数数量的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586305/

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