Creando sublistas a partir de una “lista”

Tengo una lista en un archivo, se ve así

c4a24534,2434b375,e750c718, .... 

Me he dividido en “,” y he traído la siguiente lista.

 x= ['c4a2', '4534'] ['2434', 'b375'] ['e750', 'c718'] 

Necesito hacer dos nuevas listas de esto

 i= 'c4a2' '2434' 'e750' 

y

  q= '4534' 'b375' 'c718' 

Yo he tratado :

 for x in line: x = [i.split() for i in x] 

Con esto estoy dividiendo la x. Esto me da la parte “i” pero ¿cómo obtengo el rest “q”?

Si ha leído una lista de listas, use zip() para convertir las columnas en filas:

 file_result = [ ['19df', 'b35d'] ['fafa', 'bbaf'] ['dce9', 'cf47'] ] a, b = zip(*file_result) 

Dando por sentado que ya has analizado el archivo:

 x = [['c4a2', '4534'], ['2434', 'b375'], ['e750', 'c718']] i = [a[0] for a in x] # ['c4a2', '2434', 'e750'] q = [a[1] for a in x] # ['4534', 'b375', 'c718'] 

Esto toma el primer y segundo elemento de cada sub-lista, y lo coloca en una nueva variable.

Suponiendo que este es un contenido del archivo input.txt :

 c4a24534,2434b375,e750c718 

Use zip() para dividir en dos listas:

 with open('input.txt') as f: i, q = zip(*((x[:4], x[4:]) for line in f for x in line.split(','))) print i print q 

Huellas dactilares:

 ('c4a2', '2434', 'e750') ('4534', 'b375', 'c718') 

Estas son tuplas , si necesita hacer listas de ellas, llame a la list() en cada una:

 print list(i) print list(q) 
 #!/usr/bin/python import ast file = open("file.txt","r") i = list() q = list() for line in file: testarray = ast.literal_eval(line) q.append(testarray.pop()) i.append(testarray.pop()) print(i) print(q) 

algo como eso ?

Puedes usar zip para separar la lista en dos colecciones.

 x=[ ['c4a2', '4534'], ['2434', 'b375'], ['e750', 'c718'] ] i,q = zip(*x) print i print q 

Resultado:

 ('c4a2', '2434', 'e750') ('4534', 'b375', 'c718') 

Estas son las tuplas, sin embargo. Si realmente quieres listas, necesitarías convertirlas.

 i,q = map(list, zip(*x)) #or: i,q = [list(tup) for tup in zip(*x)] #or: i,q = zip(*x) i, q = list(i), list(q)