Programa de Python para unir strings de jerarquía equivalente

Dada una lista de strings con varias jerarquías, la tarea es escribir un programa en Python para unir aquellas que tienen las mismas jerarquías.

Se sabe que los elementos en la misma dimensión antes de un cambio de dimensión están en la misma jerarquía.

Entrada: test_list = [«gfg», «mejor», [» para «, «todos»], «todos», [«CS», «geeks»]]

Salida: [‘gfg best’, [‘ for all ‘], ‘ all ‘, [‘ CS geeks ‘]]

Explicación: strings en una jerarquía similar a la que se unió.

Entrada: test_list = [«gfg», «mejor», [«para», «todos»], [«CS», «geeks»]]

Salida: [‘gfg best’, [‘ for all ‘], [‘ CS geeks ‘]]

Explicación: strings en una jerarquía similar a la que se unió.

Método 1: Usar type() , loop , recursion y join()

En esto, se verifica que el elemento de la lista sea una string usando type(), si se encuentra, la tarea de unión se realiza usando join para esa jerarquía. Si se encuentra que el elemento es una lista, la lista interna se recurre para una lógica similar para el siguiente nivel de jerarquía.

Ejemplo:

Python3

def hierjoin(test_list):
    res = []
    temp = []
    val = None
    for sub in test_list:
  
        # if string then appended
        if type(sub) == str:
            temp.append(sub)
  
        # if list, the string is joined for hierarchy
        # recurred for inner list
        else:
            res.append(''.join(temp))
            temp = []
            val = hierjoin(sub)
            res.append(val)
    if temp != []:
        res.append(''.join(temp))
    return res
  
  
# initializing list
test_list = ["gfg ", " best ", [" for ", " all "],
             " all ", [" CS ", " geeks "]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# calling recursion
res = hierjoin(test_list)
  
# printing result
print("The joined strings : " + str(res))

Producción:

La lista original es: [‘gfg’, ‘best’, [‘for’, ‘all’], ‘all’, [‘CS’, ‘geeks’]]

Las strings unidas: [‘gfg best’, [‘ for all ‘], ‘ all ‘, [‘CS geeks’]]

Método 2: Usar join() , map() , recursividad y groupby()

En esta equijerarquía, los grupos se forman usando groupby(). Luego map() se usa para llamar a la función de recursión para la jerarquía interna de strings de listas.

Ejemplo:

Python3

from itertools import groupby
  
  
def hierjoin(test_list):
  
    # groups are formed for similar hierarchy using groupby
    return [idx for x, y in groupby(test_list, key=str.__instancecheck__)
            for idx in ([''.join(y)] if x else map(hierjoin, y))]
  
  
# initializing list
test_list = ["gfg ", " best ", [" for ", " all "],
             " all ", [" CS ", " geeks "]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# calling recursion
res = hierjoin(test_list)
  
# printing result
print("The joined strings : " + str(res))

Producción:

La lista original es: [‘gfg’, ‘best’, [‘for’, ‘all’], ‘all’, [‘CS’, ‘geeks’]]

Las strings unidas: [‘gfg best’, [‘ for all ‘], ‘ all ‘, [‘CS geeks’]]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *