создание списка списков на основе условия - PullRequest
1 голос
/ 07 апреля 2020

У меня есть список, содержащий некоторые числа, увеличивающиеся до определенного значения, а затем каким-то образом повторяющие то же поведение, но без периодов c. Мне нужно создать список списков, представляющих эти группы из входных данных.

input:

index=[2,5,6,9,10,11,13,18,19,21, 3,5,8,9,12,17,119, 2,4,6,8,10,12,14,16,18,200, 3,5,7,9,11,14,15,19,233] 

required_output

[[2, 5, 6, 9, 10, 11, 13, 18, 19, 21],
 [3, 5, 8, 9, 12, 17, 119],
 [2, 4, 6, 8, 10, 12, 14, 16, 18, 200],
 [3, 5, 7, 9, 11, 14, 15, 19, 233]]

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

temp_lst=[]
list_of_lists=[]
for i in range(len(index)-1):
    if index[i+1]>index[i]:
        temp_lst.append(index[i])

    else:
        temp_lst.append(index[i])        
        list_of_lists.append(temp_lst)
        temp_lst=[]

list_of_lists.append(temp_lst)
list_of_lists[-1].append(index[-1])

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете добавить новый подсписок, если выходные данные пусты или если текущий элемент меньше, чем последний элемент в последнем подсписке:

list_of_lists=[]
for i in index:
    if not list_of_lists or i < list_of_lists[-1][-1]:
        list_of_lists.append([])
    list_of_lists[-1].append(i)

list_of_lists становится:

[[2, 5, 6, 9, 10, 11, 13, 18, 19, 21],
 [3, 5, 8, 9, 12, 17, 119],
 [2, 4, 6, 8, 10, 12, 14, 16, 18, 200],
 [3, 5, 7, 9, 11, 14, 15, 19, 233]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...