开发者

Python List Help (Find Biggest number)

开发者 https://www.devze.com 2023-03-18 18:38 出处:网络
Ok, I have this script that i wrote: i=1024; a=[0]*i; for k in range(0,i): a[k]=(k*k*k*k-74*k*k+173) % 1000033

Ok, I have this script that i wrote:

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

I don'开发者_运维百科t understand how to find the biggest number in the list AND its position.


Here's one way:

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

In your example, value is 999926 and index is 2.


# 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)


Just keep a running track, then you don't need the list:

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)

Output:

(2, 999926)

P.S. i = 1048576 took a couple seconds and spat out:

(156865, 1000032L)

Note that it switched to long integers in there somewhere. This is with Python 2.6.1.

P.P.S. Also note that this method only finds the lowest index with the maximum. To get the highest index, replace the < with <=:

(843168, 1000032L)


m = max(a)
m_index = a.index(m)


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)))
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号