Python列表帮助(查找最大数量)

时间:2011-07-06 01:40:05

标签: python string list numbers

好的,我写了这个脚本:

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 个答案:

答案 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)))