Lista de comprensión uniendo cada dos elementos juntos en una lista

¿Cómo convertiría lst1 a lst2 uniendo el elemento 1 al elemento 2 y así sucesivamente?

lst1=[' ff 55 00 90 00 92 00 ad 00 c6 00 b7 00 8d 00 98 00 87 00 8a 00 98 00 8f 00 ca 01 78 03 54 05 bf'] 

a

 lst2=[ff55, 0090, 0092, 00ad, 00c6, 00b7, 008d, 0098, 0087, 008a, 0098, 008f, 00ca, 0178, 0354,05bf] 

intentado pero no fue tan expiado

  for i in lst: lstNew = [] tempList = i.split() lenList = len(tempList) #print tempList index = 0 while (index < lenList): print tempList[index] + tempList[index+1] index = index + 2 

Esta bien:

 >>> lst = ['ff', '55', '00', '90', '00', '92', '00', 'ad', '00', 'c6', '00', 'b7', '00', '8d', '00', '98', '00', '87', '00', '8a', '00', '98', '00', '8f', '00', 'ca', '01', '78', '03', '54', '05', 'bf'] >>> [ ''.join(x) for x in zip(lst[0::2], lst[1::2]) ] ['ff55', '0090', '0092', '00ad', '00c6', '00b7', '008d', '0098', '0087', '008a', '0098', '008f', '00ca', '0178', '0354', '05bf'] >>> 

O

 >>> [ x+y for x,y in zip(lst[0::2], lst[1::2]) ] ['ff55', '0090', '0092', '00ad', '00c6', '00b7', '008d', '0098', '0087', '008a', '0098', '008f', '00ca', '0178', '0354', '05bf'] >>> 

Suponiendo que tuviera una cadena de caracteres de 2 letras separadas por espacios que podría hacer:

 >>> from funcy import ichunks >>> s = "ff 55 00 90 00 92 00 ad 00 c6 00 b7 00 8d 00 98 00 87 00 8a 00 98 00 8f 00 ca 01 78 03 54 05 bf" >>> ["".join(chunk) for chunk in ichunks(2, s.split())] ['ff55', '0090', '0092', '00ad', '00c6', '00b7', '008d', '0098', '0087', '008a', '0098', '008f', '00ca', '0178', '0354', '05bf'] >>> 

Esto hace uso de mi librería favorita funcy

Actualizar:

Como se sugiere en los comentarios; Aquí hay una versión ligeramente mejor:

 >>> from funcy import ichunks >>> s = "ff 55 00 90 00 92 00 ad 00 c6 00 b7 00 8d 00 98 00 87 00 8a 00 98 00 8f 00 ca 01 78 03 54 05 bf" >>> [c[:2] + c[3:5] for c in ichunks(6, s)] ['ff55', '0090', '0092', '00ad', '00c6', '00b7', '008d', '0098', '0087', '008a', '0098', '008f', '00ca', '0178', '0354', '05bf'] >>> 

Dada tu lista en el formato

 lst1=[' ff 55 00 90 00 92 00 ad 00 c6 00 b7 00 8d 00 98 00 87 00 8a 00 98 00 8f 00 ca 01 78 03 54 05 bf'] 

Vamos a reemplazar todos los espacios y convertirlo en cadena

 list1=''.join([i.replace(" ","") for i in lst1]) 

Ahora podemos incrementar cada 4 caracteres para obtener un resultado.

 list1= [list1[i:i+4]for i in range(0,len(list1),4)] print list #output=['ff55', '0090', '0092', '00ad', '00c6', '00b7', '008d', '0098', '0087', '008a', '0098', '008f', '00ca', '0178', '0354', '05bf'] 

Necesitas definir tu lista correctamente. Su lista tiene un solo elemento, una cadena. Esta es una lista de cadenas de longitud 2: (que creo que es lo que quieres)

 lst1 = ['ff', '55', '00', '90', '00', '92', '00', 'ad', '00', 'c6', '00', 'b7', '00', '8d', '00', '98', '00', '87', '00', '8a', '00', '98', '00', '8f', '00', 'ca', '01', '78', '03', '54', '05', 'bf'] 

Entonces puedes hacer esto para crear lst2 :

 lst2 = [] for i in range(0, len(lst1), 2): lst2.append(lst1[i] + lst1[i+1) 

Esto está iterando sobre lst1 y poniendo cada 2 elementos juntos, luego añadiéndolo lst2 .