Как создать собственный список из существующего списка, основываясь на условии в Python? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть список

 L= [1,3,3,4,4,5,5,7,8,9,9,9].

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

например: В списке (L) начинается с первого элемента

1) 1 меньше следующего числа 3 в списке (L), затем добавьте 1 в новый список (new_list), затем удалите из основного списка (L)

2) следующие 3 не меньше 3, мы должны пропустить сейчас (на следующей итерации мы должны использовать это 3)

3) в текущей итерации 3 сравнивается с 4, т.е. с 3 меньше, чем 4, затем добавьте 3 в (new_list) и удалите из основного списка (L).

4) следующее сравнение 4 со следующим числом 4 будет не менее, чем пропустить

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

мой ожидаемый результат после первой итерации in new_list [[1,3,4,5,7,8,9]] и L= [3,4,5,9,9]

мой окончательный ожидаемый результат будет таким: [[1,3,4,5,7,8,9],[3,4,5,9],[9]]

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вот способ сделать это:

result = []
while len(L)>0:
    indexes_to_remove = []
    result_temp = []
    L = L_temp
    for i in range(len(L)-1):
        if L[i]<L[i+1]:
            result_temp.append(L[i])
            indexes_to_remove.append(i)
    # Since there is a 9 at the end of each of your list I assume that
    # you add the last value of your list at each iteration
    if len(L)>0:
        result_temp.append(L[len(L)-1])
        indexes_to_remove.append(len(L)-1)
    L_temp = [i for j, i in enumerate(L) if j not in indexes_to_remove]  
    result.append(result_temp)
    print("L = {}; result = {}".format(L, result))

Выход:

L = [1, 3, 3, 4, 4, 5, 5, 7, 8, 9, 9, 9]; result = [[1, 3, 4, 5, 7, 8, 9]]
L = [3, 4, 5, 9, 9]; result = [[1, 3, 4, 5, 7, 8, 9], [3, 4, 5, 9]]
L = [9]; result = [[1, 3, 4, 5, 7, 8, 9], [3, 4, 5, 9], [9]]
L = []; result = [[1, 3, 4, 5, 7, 8, 9], [3, 4, 5, 9], [9], []]
0 голосов
/ 09 июля 2019

Я хочу определить номер пользовательского списка, который я могу создать из существующего списка.

Поскольку вы хотите указать только количество таких списков, которые вы получите в конце, а неФактический список, вы можете легко вычислить его следующим образом.Пройдите по списку и проверьте условие меньше или равно и увеличьте счетчик до тех пор, пока он не будет выполнен, если не удовлетворен, затем повторно инициализируйте счетчик до нуля.И продолжай обходить.В конце выведите максимальное значение счетчика, полученное вами на любом шаге, который будет ответом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...