Oi Angela,
Este é um conceito chamado de compreensão de lista, suportado pelo Python. A ideia é criar uma lista nova a partir de outra que já existe, utilizando uma sintaxe muito parecida com a notação matemática para definição de conjuntos.
Basicamente, você está dizendo "minha nova lista é todo elemento d
tal que d
está em diferencas
e vale 0
". Isto é, você está escolhendo elementos de um domínio (outra lista) a partir de um filtro (apenas os que tem diferença zero). Outro exemplo:
>>> pares = [n for n in range(10) if n % 2 == 0]
>>> pares
[0, 2, 4, 6, 8]
Estou dizendo que minha nova lista é todo número n no intervalo [0, 10) onde n é par.
Você pode explorar bastante esta ideia. Por exemplo, se queremos todos os números do intervalo [0, 10) ao quadrado, podemos escrever
>>> quadrados = [x * x for x in range(10)]
>>> quadrados
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Note que nesse caso não estamos utilizando nenhum filtro.