Achatar uma lista de listas em uma linha em Python

Às vezes, você precisa simplificar uma lista de listas. A maneira antiga seria fazer isso usando um par de loops um dentro do outro. Enquanto isso funciona, é uma desordem da qual você pode passar. Esta dica mostra como você pode pegar uma lista de listas e achatá-la em uma linha usando a compreensão de lista.

O caminho do loop

#The list of lists
list_of_lists
= [range(4), range(7)]
flattened_list
= []

#flatten the lis
for x in list_of_lists:
for y in x:
flattened_list
.append(y)

Forma de compreensão de lista

#The list of lists
list_of_lists
= [range(4), range(7)]

#flatten the lists
flattened_list
= [y for x in list_of_lists for y in x]

Isso não é ciência de foguetes, mas é mais limpo e, acredito, mais rápido do que o método de loop for.

Dos itertools grosseiros vem o resgate, como afirmado abaixo nos comentários de <a href=” https://coderwall.com/iromli “> iromli </a>

list (itertools.chain (* lista de listas))

O que é mais rápido do que qualquer um dos métodos acima, e simplificar listas de listas é exatamente o que foi projetado para fazer.