好的,我写了这个脚本:
i=1024;
a=[0]*i;
for k in range(0,i):
a[k]=(k*k*k*k-74*k*k+173) % 1000033
print a
我不明白如何找到列表中的最大数字及其位置。
答案 0 :(得分:6)
这是一种方式:
value = max(a)
index = a.index(value)
在您的示例中,值为999926,索引为2.
答案 1 :(得分: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)
答案 2 :(得分:1)
m = max(a)
m_index = a.index(m)
答案 3 :(得分: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)
P.S。 i = 1048576
花了几秒钟吐出来:
(156865, 1000032L)
请注意,它在某处切换为长整数。这是Python 2.6.1。
P.P.S。另请注意,此方法仅查找具有最大值的最低索引。要获得最高索引,请将<
替换为<=
:
(843168, 1000032L)
答案 4 :(得分:1)
lst = [1,3,4,56,2,66,20,312]
print "%d found at index %d is the max of the list" % (max(lst), lst.index(max(lst)))