Python: lista dividida sincronizada con otros

A veces, mientras trabajamos con datos de Python, podemos tener problemas en los que necesitamos realizar la división de una string, que tiene una asignación con un elemento en otra lista, por lo que debemos realizar la asignación a diferentes palabras formadas debido a la división. Este tipo de problema es peculiar, pero puede tener aplicación en muchos dominios. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [5, 6], str_list = [‘Gfg es mejor’, ‘Me encanta Gfg’]
Salida : [5, 5, 5, 6, 6, 6]

Entrada : test_list = [5], str_list = [‘Gfg es mejor’]
Salida : [5, 5, 5]

Método #1: Usarmap() + zip() + enumerate() + split()
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de dividir valores usando split(), y el mapeo de elementos correspondiente usando zip() y map(). La iteración se realiza mediante enumerate().

# Python3 code to demonstrate working of 
# Synchronized Split list with other
# Using map() + zip() + enumerate() + split()
  
# initializing list
test_list = [5, 6, 3, 7, 4] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing String list 
str_list = ['Gfg', 'is best', 'I love', 'Gfg', 'and CS']
  
# Synchronized Split list with other
# Using map() + zip() + enumerate() + split()
temp = list(map(list, zip(*[(idx, sub) for idx, val in 
            enumerate(map(lambda x: x.split(), str_list), 1) for sub in val])))
res = []
for ele in temp[0]:
    res.append(test_list[ele - 1])
  
# printing result 
print("Mapped list elements : " + str(res))
Producción :

The original list is : [5, 6, 3, 7, 4]
Mapped list elements : [5, 6, 6, 3, 3, 7, 4, 4]

Método n.º 2: usarchain.from_iterables() + zip()
Esto es otra forma más en la que se puede realizar esta tarea. En esto, realizamos la tarea de aplanar usando chain.from_iterables() y zip() se usa para realizar iteraciones paralelas.

# Python3 code to demonstrate working of 
# Synchronized Split list with other
# Using chain.from_iterables() + zip()
from itertools import chain
  
# initializing list
test_list = [5, 6, 3, 7, 4] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing String list 
str_list = ['Gfg', 'is best', 'I love', 'Gfg', 'and CS']
  
# Synchronized Split list with other
# Using chain.from_iterables() + zip()
res = list(chain.from_iterable([[sub1] * len(sub2.split()) for sub1, sub2 in zip(test_list, str_list)]))
  
# printing result 
print("Mapped list elements : " + str(res))
Producción :

The original list is : [5, 6, 3, 7, 4]
Mapped list elements : [5, 6, 6, 3, 3, 7, 4, 4]

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 *