Добро пожаловать в переполнение стека! Я видел, что вы отредактировали, чтобы добавить некоторый код, который доказал, что вы пробовали, спасибо за это, нам нравится видеть больше этого!
Однако ваша попытка имеет сложность времени O(N ^ 2), поскольку вы запускаете цикл for длины (li) с вложенным циклом длины (li) - 1, что означает для каждого символа в li, вы должны пройти len(li)
раз , что медленно.
Это «непитоновский» способ сделать это, он проходит только через li один раз и довольно просто:
li=[6,1,5,1,3,1,1]
prev = li[0] # first element
output = []
for i in range(1, len(li)):
if(prev >= li[i]):
output.append(prev)
prev = li[i]
print(output)
Вывод:
[6, 5, 3, 1]
ПРИМЕЧАНИЕ : После дополнительного прочтения вашего вопроса я понял, что, возможно, неверно истолковал ваш вопрос.
Теперь я хочу проверить, является ли элемент списка больше или равен всем последующим элементам.
Я не заметил, что «все»,и я прошу прощения за это.
Я могу сделать это "pythonic-ish", используя нарезку списка:
li=[6,1,5,1,3,1,1]
output=[]
for i in range(0, len(li)):
if(len(li[i+1:]) == 0): #if last element
break # you can choose to count this in or not
if(li[i] >= max(li[i+1:])): # if current element larger or equals max of ALL successive elements
output.append(li[i])
print(output)
Вывод (все тот же):
[6, 5, 3, 1]
Теперь в этом решении временная сложность будет O (N ^ 2), потому что max - это O (N) -функция, и она вызывается N раз, в результате чего O (N * N) = O (N ^ 2) время