Условная проверка между двумя объектами int - PullRequest
0 голосов
/ 21 ноября 2018

Я повторяю цикл for, строю список, сравнивая последнее число этого списка с другим числом.

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

если последний элемент списка больше, я бы хотел выдвинутьпоследний пункт списка.затем я хотел бы подвергнуть его тем же условным условиям.

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

if tempList:
    lastNum=tempList[-1]
    #############################################
    if element < lastNum:
        incList.append(tempList)
        tempList.pop()
        lastNum=tempList[-1]
   #############################################

    elif lastNum < element:                                               
        tempList.append(element)
        continue

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Попробуйте это:

yourlist = [3,1,4]
n = 1
resultlist = yourlist[:-1] if yourlist[-1]>=n else yourlist+[n]
print(resultlist)
n = 5
resultlist = yourlist[:-1] if yourlist[-1]>=n else yourlist+[n]
print(resultlist)

Вывод: [3,1]

[3,1,4,5]

0 голосов
/ 21 ноября 2018

Вы можете связать это в функцию:

def append_if_lower_else_pop_end_from_list_until_lower(l, num):
    """Add num to l if l[-1] < num, else pop() from l until"""
    while l and l[-1] > num:
        l.pop()
    l.append(num)

    # this is not strictly needed - lists are mutable so you are mutating it
    # returning it would only make sense for chaining off it with other methods
    return l 

k = [3,5,7,9,11,13]
print(k)
append_if_lower_else_pop_end_from_list_until_lower(k, 10)
print(k)
append_if_lower_else_pop_end_from_list_until_lower(k, 6)
print(k)
append_if_lower_else_pop_end_from_list_until_lower(k, 10)
print(k)
append_if_lower_else_pop_end_from_list_until_lower(k, 10)
print(k)
append_if_lower_else_pop_end_from_list_until_lower(k, -10)
print(k)

Вывод:

[3, 5, 7, 9, 11, 13]  # start
[3, 5, 7, 9, 10]      # after adding 10
[3, 5, 6]             # after addding 6
[3, 5, 6, 10]         # after adding 10
[3, 5, 6, 10, 10]     # after adding 10 again
[-10]                 # after adding -10 

Зачем возвращать список: пример для цепочки:

k = [3,5,17,9,11,13]
append_if_lower_else_pop_end_from_list_until_lower(k, 10).sort()
print(k)

Вывод:

[3, 5, 9, 10, 17]
...