¿Cómo combino varias listas en una lista? [duplicate]

3 minutos de lectura

avatar de usuario de user1452759
usuario1452759

Tengo muchas listas:

['it']
['was']
['annoying']

Quiero fusionarlos en una sola lista:

['it', 'was', 'annoying']

  • Esto no es realmente un duplicado de eso. Esa pregunta es cómo aplanar una lista de listas anidadas. Esta pregunta es mucho más básica y solo pregunta cómo concatenar listas individuales.

    – BrenBarn

    20 de julio de 2012 a las 6:55

  • @BrenBarn Eso es exactamente lo que estoy preguntando.

    – usuario1452759

    20 de julio de 2012 a las 7:08

  • Concatenar listas individuales es aplanar una lista de listas. O las “listas individuales” ya están en una lista, o están en variables separadas que deberían recopilarse en una lista (u otra secuencia) de todos modos.

    – Karl Knechtel

    6 de septiembre a las 6:16

import itertools
ab = itertools.chain(['it'], ['was'], ['annoying'])
list(ab)

Solo otro metodo….

  • Ok, hay un archivo que tiene diferentes palabras en ellas. he hecho s = [word] para poner cada palabra del archivo en la lista. Pero crea listas separadas (print s devuelve [‘it]’][‘was’][‘annoying’]) como mencioné anteriormente. Quiero fusionarlos todos en una lista.

    – usuario1452759

    20 de julio de 2012 a las 7:05


  • @usuario1452759 list(itertools.chain(['it'], ['was'], ['annoying'])) da ['it', 'was', 'annnoying']. ¿Es eso diferente de lo que quieres?

    – lvc

    20 de julio de 2012 a las 7:15

  • Si la entrada es una lista de listas, usando el from_iterable función como ab = list(itertools.chain.from_iterable([['it'], ['was'], ['annoying']])) sería dar la respuesta que el OP espera

    – Fnord

    22 de marzo de 2017 a las 18:45

  • También podrías pasarlo como un *args diciendo: itertools.chain(*my_list_of_lists).

    – Oxcug

    21 de julio de 2017 a las 19:39

  • @BallpointBen No, porque from_iterable acepta cualquier iterable, que puede ser, por ejemplo, un generador que devuelve listas posteriores.

    – Michael Goral

    24 de mayo de 2019 a las 9:16

Solo agrégalos:

['it'] + ['was'] + ['annoying']

deberías leer el tutorial de python para aprender información básica como esta.

  • Resolviste el caso i=3, ¿qué tal i=n?

    – William Entriken

    15 de agosto de 2017 a las 2:30

  • @Full Decent, gracias por señalar esto, no pensé en ese caso. Pero creo que si es el caso, puede hacer un bucle en las listas y concatenarlas. Para mí, solo necesito la forma más coma para unir 2 listas sin elementos duplicados.

    – zhihong

    29 de septiembre de 2017 a las 13:54


  • @zhihong Hola, ha pasado más de un año completo, pero puedes usar algo como mylist = list(set(mylist)) después de fusionar listas para deshacerse de los duplicados.

    – gatitoparry

    19 de diciembre de 2018 a las 1:21

  • @WilliamEntriken, técnicamente puede usar compilación en suma, por ejemplo sum(mylist, []) pero no es muy optimizar.

    – Zen3515

    13 de julio de 2019 a las 4:41

  • Para i = n caso, también puede usar reduce(lambda l1, l2: l1+l2, lists) dónde lists es una lista o una tupla de las listas.

    – Sayyor Y.

    16 ene 2021 a las 8:00

a = ['it']
b = ['was']
c = ['annoying']

a.extend(b)
a.extend(c)

# a now equals ['it', 'was', 'annoying']

  • Sí, pero si no está seguro de la longitud de la lista (que se utilizará para extender la lista principal), ¿cómo voy a extenderla? ¿Es posible de todos modos usar el método de corte para tratar con listas de longitud variable?

    – difractado

    20 de julio de 2016 a las 13:28

¿Ha sido útil esta solución?