Как работает функция max () в Jython? - PullRequest
0 голосов
/ 31 октября 2011

Мне нужна эта функция, чтобы сообщить мне самую длинную последовательность положительных чисел в списке.

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 не работает.

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

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

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, который на самом деле является конструктором для list, хотя это не проблема, за которой следует следить как do not do

1 голос
/ 31 октября 2011

Вам не нужен список для этого:

count = maxc = 0
for obj in nums:
    if obj > 0:
        count += 1
    else:
        maxc = max(count, maxc)
        count = 0
maxc = max(count, maxc)
0 голосов
/ 31 октября 2011

Проблема может заключаться в том, что вы не добавляете индекс в список, когда числа исчерпаны, поэтому, если список заканчивается самой длинной последовательностью, он не вернет правильное значение:

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.

...