Как работает функция max() в Jython?

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