#python #list #jython
#python #Список #jython
Вопрос:
Мне нужна эта функция, чтобы указать мне самую длинную последовательность положительных чисел в списке.
def longestSequencePos(nums):
index = 0
list = []
integ = 0
for obj in nums:
if obj > 0:
index = index 1
else:
list.append(index)
index = 0
return max(list)
список должен содержать все длины последовательностей положительных значений, но функция max не работает.
Комментарии:
1. Каким образом она не работает?
2. Никогда не используйте
list
в качестве имени переменной.3. Отладка:
print list
, или, скорееprint better_name_than_list
4. Пожалуйста, исправьте свой заголовок, чтобы отразить ваш актуальный вопрос. Название вводит в заблуждение. Возможно, «как мне использовать max (), чтобы найти самую длинную последовательность положительных чисел в списке». или что-то, что отражает реальную проблему.
Ответ №1:
вы ничего не добавляете в свой список при выходе из цикла, а в nums есть только положительные целые числа, вам нужно будет сделать что-то вроде:
def longestSequencePos(nums):
index = 0
list = []
integ = 0
for obj in nums:
if obj > 0:
index = index 1
else:
list.append(index)
index = 0
list.append(index)
return max(list)
который добавит последнее значение индекса, если список пуст в конце цикла.
кроме того, вы вызвали свой list
, ну, list
, который на самом деле является конструктором для a list
, хотя это не проблема, это то, на что следует обратить внимание как do not do
Комментарии:
1. Индекс должен быть добавлен в список в конце цикла, даже если он не пустой, иначе он пропустит любой случай, когда самая длинная последовательность находится в конце.
Ответ №2:
Для этого вам не нужен список:
count = maxc = 0
for obj in nums:
if obj > 0:
count = 1
else:
maxc = max(count, maxc)
count = 0
maxc = max(count, maxc)
Ответ №3:
Проблема может заключаться в том, что вы не добавляете индекс в список, когда nums исчерпан, поэтому, если список заканчивается самой длинной последовательностью, он не вернет правильное значение:
def longestSequencePos(nums):
index = 0
list = []
integ = 0
for obj in nums:
if obj > 0:
index = index 1
else:
list.append(index)
index = 0
list.append(index)
return max(list)
Эта исправленная версия работает для меня в обычном интерпретаторе python. Я не пробовал это на jython.