Qual é a maneira mais pitônica de identificar duplicatas consecutivas em uma list
Eu tenho uma lista de números inteiros e quero ser capaz de identificar blocos contíguos de duplicatas: ou seja, eu quero produzir uma lista de preservadores de pedidos de pares onde cada um deles contém (int_in_question, número de ocorrências
Por exemplo, se eu tiver uma lista como:
[0, 0, 0, 3, 3, 2, 5, 2, 6, 6]
Eu quero que o resultado seja:
[(0, 3), (3, 2), (2, 1), (5, 1), (2, 1), (6, 2)]
Eu tenho umbastant maneira simples de fazer isso com um loop for, temp e um contador:
result_list = []
current = source_list[0]
count = 0
for value in source_list:
if value == current:
count += 1
else:
result_list.append((current, count))
current = value
count = 1
result_list.append((current, count))
Mas eu realmente gosto dos idiomas de programação funcional do python, e gostaria de poder fazer isso com uma expressão simples de gerador. No entanto, acho difícil manter subcontagens ao trabalhar com geradores. Sinto que um processo de duas etapas pode me levar até lá, mas por enquanto estou perplex
Existe uma maneira particularmente elegante / pitônica de fazer isso, especialmente com geradore