Я пытаюсь сгруппировать элементы в списке, чтобы сжать его и сохранить в том же порядке, но только если он удовлетворяет определенным условиям.
Скажем, у меня есть список, и я сокращаю его, используя это понимание списка:
>> l = [1,1,2,2,3,3,4,4,4,"7","7","7",5,5]
>> [len(list(group)) if not isinstance(key, str) else key for key, group in groupby(l)]
Выход:
>> [2, 2, 2, 3, '7', 2]
Желаемый вывод:
>> [2, 2, 2, 3, '7', '7', '7', 2]
Так что я хочу, чтобы частота элемента была только в том случае, если это число, но если это строка, я хочу, чтобы каждое отдельное вхождение встречалось в списке, а не только один раз.
Я понимаю, потому что понимание использует «groupby (l)» вместо «l» для создания нового списка, но какая у меня альтернатива?