Python 列表帮助(找最大数字)

0 投票
5 回答
2747 浏览
提问于 2025-04-16 20:55

好的,我写了一个脚本:

i=1024;
a=[0]*i;
for k in range(0,i):
    a[k]=(k*k*k*k-74*k*k+173) % 1000033
print a

我不太明白怎么找到列表中最大的数字以及它的位置。

5 个回答

3
# create the list with a list comprehension
m = [(k*k*k*k-74*k*k+173) % 1000033 for k in range(i)]
# enumerate the values and pick the largest by value
pos, val = max(enumerate(m), key=lambda (pos, val): val)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

6

这里有一种方法:

value = max(a)
index = a.index(value)

在你的例子中,值是999926,索引是2。

1

只需要保持一个运行中的记录,这样你就不需要列表了:

largest = None
i = 1024

for k in range(i):
    a = (k ** 4 - 74 * k ** 2 + 173) % 1000033
    if not largest or largest[1] < a:
        largest = (k, a)

print(largest)

输出结果:

(2, 999926)

附注:i = 1048576 花了几秒钟,结果是:

(156865, 1000032L)

注意,在某个地方它切换到了长整型。这是在使用 Python 2.6.1 的情况下。

再附注:还要注意,这种方法只找到最大值的最低索引。如果想要找到最高索引,只需把 < 替换成 <=

(843168, 1000032L)

撰写回答