Scalanie list

0

Cześć, mam listę składającą się z 350 jednoelementowych list:

lista = [ ['zdolny'], ['znakomity'], ['osiągnięcie'] ]

W jaki sposób scalić wszystkie listy, tak aby w rezultacie powstała jedna, wieloelementowa lista, czyli:

lista = [zdolny', 'znakomity', 'osiągnięcie']

0
from functools import reduce
from operator import concat

flattened_list = reduce(concat, list_to_flatten, [])
3
import itertools

lista = [ ['zdolny'], ['znakomity'], ['osiągnięcie'] ]

flatten = list(itertools.chain(*lista))

print(flatten) # -> ['zdolny', 'znakomity', 'osiągnięcie']
2

@lion137: Nie ty czasem mi pisałeś o more_itertools :D?

import more_itertools

lista = [ ['zdolny'], ['znakomity'], ['osiągnięcie'] ]

flatten = list(more_itertools.flatten(lista)) #Jedyna różnica jest taka, że nie musisz wypakowywać listy gwiazdką.

print(flatten) # -> ['zdolny', 'znakomity', 'osiągnięcie']
2

Można po prostu bez importowania niczego wykorzystać list comprehension:

flatten = [item for sublist in lista for item in sublist]
0

lista1 = []
lista = [ ['zdolny'], ['znakomity'], ['osiągnięcie'] ]
        for s in lista:
               lista1 += s

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0