Функция Max () с использованием питона из цикла

Я пытаюсь написать программу для определения максимального значения выборки из звука. Цикл возвращает значения всех образцов, однако я не могу понять, как печатать самые большие.

def largest(): f=pickAFile() sound=makeSound(f) for i in range(1,getLength(sound)): value=getSampleValueAt(sound,i) print max([value]) 

Пытаться:

 def largest(): f = pickAFile() sound = makeSound(f) value = [] for i in range(1, getLength(sound)): value.append(getSampleValueAt(sound, i)) print max(value) 

Или

 def largest(): f = pickAFile() sound = makeSound(f) print max(getSampleValueAt(sound, i) for i in range(1, getLength(sound))) 

С вашим кодом value перезаписывается на каждой итерации. Если вы создадите список со всеми значениями, вы можете найти max с помощью max .

Также см:

Не помните, что мы имеем дело с аудиоданными. Возможно, миллионы образцов. Если вы хотите придерживаться чего-то эффективного как в пространстве, так и во времени, вы должны полагаться на гораздо менее сексуальный:

 def largest(): f = pickAFile() sound = makeSound(f) max = getSampleValueAt(sound, 1) # FIX ME: exception (?) if no data idx = 2 while idx < getLength(sound): v = getSampleValueAt(sound, i) if v > max: max = v i += 1 print max 

Решение на основе генератора эффективно также с точки зрения пространства, но для скорости ничто не может бить простой-императивный цикл в Python.

Не тестировал, но, может быть:

 def largest(): f=pickAFile() sound=makeSound(f) value = [ getSampleValueAt(sound,i) for i in range(1,getLength(sound)) ] print max(value)