Python 列表帮助(找最大数字)
好的,我写了一个脚本:
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)