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:
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
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
y ¿por qué no?:
lista1 = ["2" , "3"]
lista2 = ["4" , "5"]
print(lista1+lista2)
Cita de: tincopasan en 4 Diciembre 2017, 11:10 AM
y ¿por qué no?:
lista1 = ["2" , "3"]
lista2 = ["4" , "5"]
print(lista1+lista2)
así no consigues una lista nueva que contenga las dos, solo imprimes ambas.
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.
Exacto ivancea96
aangrymasther no quise escribir lo que era obvio:
lista1 = ["2" , "3"]
lista2 = ["4" , 5]
x=lista1+lista2 #ahí está la nueva lista
print(x)
Gracias, pero nada me ha servido, ahora me retorna listas vacias. Y aun separadas
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)
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:
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:
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)
No asignaste el resultado de la suma a la variable:
asm_file_cont = asm_file_cont + f1
ivancea96 esa es una forma, esta es más parecida a la que él quería usar
asm_file_cont += f1
no la use porque antes dijo que no le andaba el append y el join
Gracias, funciono. La funcion dump es una funcion del modulo pickle (un modulo para serializar objetos)