Справка по списку Python (Найти наибольшее число) - PullRequest
0 голосов
/ 06 июля 2011

Хорошо, у меня есть сценарий, который я написал:

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 ]

6 голосов
/ 06 июля 2011

Вот один из способов:

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

В вашем примере значение равно 999926, а индекс равен 2.

3 голосов
/ 06 июля 2011
# 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)
1 голос
/ 07 июля 2011
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)))
1 голос
/ 06 июля 2011

Просто продолжайте беговую дорожку, тогда вам не нужен список:

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)

PS i = 1048576 занял пару секунд и выплюнул:

(156865, 1000032L)

Обратите внимание, что где-то там переключились на длинные целые числа.Это с Python 2.6.1.

PPS Также обратите внимание, что этот метод находит только самый низкий индекс с максимальным.Чтобы получить самый высокий индекс, замените < на <=:

(843168, 1000032L)
1 голос
/ 06 июля 2011
m = max(a)
m_index = a.index(m)
...