[Python 3] Unir dos listas en una

Iniciado por n1sen, 4 Diciembre 2017, 02:40 AM

0 Miembros y 2 Visitantes están viendo este tema.

n1sen

Vengo a preguntar como unir dos listas en una, he intentado con .join y .append pero no ha funcionado.
Tengo esta lista:

['STR_PRINT "Hola mundo!"']
['DIV("VOID", 5, 5)']
['INT("test", "54")']
['']


Como se ve, cada linea esta en una lista distinta. (se esta leyendo de un archivo)
Deberia estar asi:

['STR_PRINT "Hola mundo!"', 'DIV("El numero 5 en 5 cabe:", 5, 5)', 'INT("test", "54")']

Aca tengo un fragmento del codigo que me genera problema:
Código (python) [Seleccionar]

def PRG(path):
    out_file = input("Output file name..: ")
    with open(path, 'r') as inputfile:
        with open(out_file, 'wb') as outputfile:
            for f1 in inputfile:
                asm_file_cont = [f1[:-1]] #El [:-1] es para quitar el salto de linea
                dump(asm_file_cont, outputfile)
                print(asm_file_cont)

Saludos
null

aangrymasther

No estoy seguro de que sea esto lo que quieras, pero pruebas con esto:

lista1 = ["2" , "3"]
lista2 = ["4" , "5"]

def unir(lista1 , lista2):
lista = []
for x in lista1:
lista.append(x)
for x in lista2:
lista.append(x)
return lista
for x in unir(lista1, lista2):
print x
Probablemente el 99% de lo que digo sea incorrecto

tincopasan

y ¿por qué no?:
Código (python) [Seleccionar]

lista1 = ["2" , "3"]
lista2 = ["4" , "5"]
print(lista1+lista2)

aangrymasther

Cita de: tincopasan en  4 Diciembre 2017, 11:10 AM
y ¿por qué no?:
Código (python) [Seleccionar]

lista1 = ["2" , "3"]
lista2 = ["4" , "5"]
print(lista1+lista2)

así no consigues una lista nueva que contenga las dos, solo imprimes ambas.
Probablemente el 99% de lo que digo sea incorrecto

ivancea96

Cita de: aangrymasther en  4 Diciembre 2017, 11:17 AM
así no consigues una lista nueva que contenga las dos, solo imprimes ambas.

Se entiende. En vez de print, simplemente lo asignas a una variable.

tincopasan

Exacto ivancea96
aangrymasther no quise escribir lo que era obvio:
Código (python) [Seleccionar]

lista1 = ["2" , "3"]
lista2 = ["4" , 5]
x=lista1+lista2   #ahí está la nueva lista
print(x)

n1sen

Gracias, pero nada me ha servido, ahora me retorna listas vacias. Y aun separadas

Código (python) [Seleccionar]
def PRG(path):
    out_file = input("Output file name..: ")
    with open(path, 'r') as inputfile:
        with open(out_file, 'wb') as outputfile:
            for f1 in inputfile:
                asm_file_cont = []
                f1 = [f1[:-1]]
                asm_file_cont + f1
                dump(asm_file_cont, outputfile)
                print(asm_file_cont)
null

tincopasan

#7
la verdad que no entiendo tu lógica de programación ni lo que querés hacer, así que supongo estás leyendo un archivo y quieres escribir todo el contenido en una lista en otro.Hay formas mejores que la que usas, pero bueno arreglemos esta:

['STR_PRINT "Hola mundo!"']
['DIV("VOID", 5, 5)']
['INT("test", "54")']
['']

supongo que estas listas son el resultado de lo leído en un archivo
y tendría que quedar así:

['STR_PRINT "Hola mundo!"', 'DIV("El numero 5 en 5 cabe:", 5, 5)', 'INT("test", "54")']  según lo que pusiste eso ya requiere mucho más código porque debe interpretar que es:'DIV("VOID", 5, 5)']
Ahora bien sigamos suponiendo y fue un error de copia y unicamente leo las líneas tal cual y las paso a una lista con tu código:
Código (python) [Seleccionar]

   def PRG(path):
       out_file = input("Output file name..: ")
       with open(path, 'r') as inputfile:
           with open(out_file, 'wb') as outputfile:
               for f1 in inputfile:
                   asm_file_cont = []    #cada vez que recorra el for la lista vuelve a estar vacía
                   f1 = [f1[:-1]]
                   asm_file_cont + f1
                   dump(asm_file_cont, outputfile)
                   print(asm_file_cont)   #acá se verá en cada iteración  

en fin probá esto:
Código (python) [Seleccionar]

def PRG(path):
   asm_file_cont = []
   out_file = input("Output file name..: ")
   with open(path, 'r') as inputfile:
       with open(out_file, 'wb') as outputfile:
           for f1 in inputfile:
               f1 = [f1[:-1]]
               asm_file_cont.append(" ".join(f1))#por tu ejemplo lo convierto a cadena
               #dump(asm_file_cont, outputfile)  lo anulé porque no tengo idea que es dump
                                                                 #supogo que es para escribir el contenido en el otro archivo
   print(asm_file_cont)


ivancea96

No asignaste el resultado de la suma a la variable:
Código (python) [Seleccionar]
asm_file_cont = asm_file_cont + f1

tincopasan

 ivancea96  esa es una forma, esta es más parecida a la que él quería usar
Código (python) [Seleccionar]
asm_file_cont +=  f1

no la use porque antes dijo que no le andaba el append y el join