python list

Obtenga el siguiente elemento de la lista en Python



(4)

Tengo una lista de oraciones como:

lst = [''A B C D'',''E F G H I J'',''K L M N'']

Lo que hice es

l = [] for i in lst: for j in i.split(): print(j) l.append(j) first = l[::2] second = l[1::2] [m+'' ''+str(n) for m,n in zip(first,second)]

La salida que obtuve es

lst = [''A B'', ''C D'', ''E F'', ''G H'', ''I J'', ''K L'', ''M N'']

La salida que quiero es:

lst = [''A B'', ''B C'',''C D'',''E F'',''F G'',''G H'',''H I'',''I J'',''K L'',''L M'',''M N'']

Estoy luchando por pensar cómo lograr esto.


Aquí hay un método que usa Regex:

import re lst = [''A B C D'',''E F G H I J'',''K L M N''] result = re.findall(r''(?=(/b/w+?/b /b/w+?/b))'', str(lst)) print(result)

Salida:

[''A B'', ''B C'', ''C D'', ''E F'', ''F G'', ''G H'', ''H I'', ''I J'', ''K L'', ''L M'', ''M N'']


Primero formatee su lista de cadenas en una lista de listas, luego haga un mapeo por zip .

i = [i.split() for i in lst] f = [f"{x} {y}" for item in i for x,y in zip(item,item[1::])] print (f) #[''A B'', ''B C'', ''C D'', ''E F'', ''F G'', ''G H'', ''H I'', ''I J'', ''K L'', ''L M'', ''M N'']


Su problema es que está aplanando toda la lista y dividiendo a parejas cuando desea dividir a las parejas posteriores solo los elementos internos. Entonces para eso realizaremos la operación en cada elemento por separado:

lst = [''A B C D'',''E F G H I J'',''K L M N''] res = [] for s in lst: sub_l = s.split() for i in range(len(sub_l)-1): res.append("{} {}".format(sub_l[i], sub_l[i+1])) print(res)

Da:

[''A B'', ''B C'', ''C D'', ''E F'', ''F G'', ''G H'', ''H I'', ''I J'', ''K L'', ''L M'', ''M N'']


nested = [] for item in lst: item = ('' ''.join(item).split()) for ix in range(len(item) - 1): nested.append('' ''.join(item[ix:ix + 2])) print (nested)

salida:

[''A B'', ''B C'', ''C D'', ''E F'', ''F G'', ''G H'', ''H I'', ''I J'', ''K L'', ''L M'', ''M N'']