Scalanie list

Odpowiedz Nowy wątek
2018-12-11 20:48
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']

edytowany 1x, ostatnio: kamil1907, 2018-12-11 20:49

Pozostało 580 znaków

2018-12-11 21:03
0
from functools import reduce
from operator import concat

flattened_list = reduce(concat, list_to_flatten, [])

Pozostało 580 znaków

2018-12-11 21:03
3
import itertools

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

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

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

Pozostało 580 znaków

2018-12-12 03:58
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']

Linux Mint
Arduino / Python 3.5.2

Pozostało 580 znaków

2018-12-12 10:32
2

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

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

Pozostało 580 znaków

2018-12-17 10:23
0

lista1 = []
lista = [ ['zdolny'], ['znakomity'], ['osiągnięcie'] ]
        for s in lista:
               lista1 += s
edytowany 5x, ostatnio: Ger Man, 2018-12-17 19:43
Wcięcia ci rozjechało. IdentationError :) - Guaz 2018-12-17 14:15

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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