Разделяйте список каждый раз, когда изменяется первый элемент дочернего списка

#python #list #loops #iteration

Вопрос:

У меня есть список, который выглядит так

 [[6, 4, 163, 42],
 [6, 44, 163, 79],
 [6, 80, 163, 118],
 [6, 119, 163, 156],
 [6, 158, 163, 187],
 [6, 192, 163, 225],
 [6, 231, 163, 265],
 [169, 4, 260, 42],
 [169, 44, 260, 79],
 [169, 80, 260, 118],
 [169, 119, 260, 156],
 [169, 158, 260, 187],
 [169, 192, 260, 225],
 [169, 231, 260, 265],
 [273, 4, 385, 42],
 [273, 44, 385, 79],
 [273, 80, 385, 118],
 [273, 119, 385, 156],
 [273, 158, 385, 187],
 [273, 192, 385, 225],
 [273, 231, 385, 265]
 

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

Я пытаюсь сделать так, чтобы список стал таким

 [[[6, 4, 163, 42],
 [6, 44, 163, 79],
 [6, 80, 163, 118],
 [6, 119, 163, 156],
 [6, 158, 163, 187],
 [6, 192, 163, 225],
 [6, 231, 163, 265]],
 [[169, 4, 260, 42],
 [169, 44, 260, 79],
 [169, 80, 260, 118],
 [169, 119, 260, 156],
 [169, 158, 260, 187],
 [169, 192, 260, 225],
 [169, 231, 260, 265]],
 [[273, 4, 385, 42],
 [273, 44, 385, 79],
 [273, 80, 385, 118],
 [273, 119, 385, 156],
 [273, 158, 385, 187],
 [273, 192, 385, 225],
 [273, 231, 385, 265]]]
 

Я не уверен, как это сделать

Комментарии:

1. какой код вы написали?

2. Подсказка: Попробуйте настроить a dict с помощью ключей 6 , 167 , и 273 , другими словами, элемента 0 каждого подсписка.

Ответ №1:

как насчет чего-нибудь вроде этого:

 print([[i for i in lst if i[0] == k] for k in list(set([j[0] for j in lst]))])
 

где «lst» — это название вашего исходного списка

Комментарии:

1. однопользовательские линии тесны

2. Если предпочтительна однострочная вставка (в большинстве случаев считается нечитабельной), давайте выберем несколько хороших имен переменных: «print([[подсписка для подсписки в lst, если подсписка[0] == ключ] для ключа в списке(набор([подсписка[0] для подсписки в lst]))])