À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.