Python: repetir elementos alternativos en la lista

Muchas veces tenemos este caso de uso particular en el que necesitamos repetir el elemento alternativo de la lista K veces. Se han discutido los problemas de hacer un clon doble, pero este problema se extiende para permitir que una variable flexible defina el número de veces que se debe repetir el elemento. Analicemos ciertas formas en que esto se puede realizar.

Método #1: Uso de la comprensión de listas
Esta tarea en particular requiere generalmente 2 bucles y la comprensión de listas puede realizar esta tarea en particular en una sola línea y, por lo tanto, reducir las líneas de códigos y mejorar la legibilidad del código.

# Python3 code to demonstrate 
# Alternate Element Repetition
# using list comprehension
  
# initializing list of lists
test_list = [4, 5, 6]
  
# printing original list 
print("The original list : " + str(test_list))
  
# declaring magnitude of repetition
K = 3
  
# using list comprehension
# Alternate Element Repetition
res = [ele for idx, ele in enumerate(test_list) for i in range(K) if idx % 2 == 0]
  
# printing result 
print("The list after alternate repeating elements : " + str(res))
Producción :

The original list : [4, 5, 6]
The list after alternate repeating elements : [4, 4, 4, 6, 6, 6]

Método #2: Usaritertools.chain.from_iterable() + itertools.repeat()
Este problema en particular también se puede resolver usando las funciones incorporadas de Python de la biblioteca itertools. La función de repetición, como su nombre indica, hace la tarea de repetir y agrupar en una lista mediante la función from_iterable.

# Python3 code to demonstrate 
# Alternate Element Repetition
# using itertools.chain.from_iterable() + itertools.repeat()
import itertools
  
# initializing list of lists
test_list = [4, 5, 6]
  
# printing original list 
print("The original list : " + str(test_list))
  
# declaring magnitude of repetition
K = 3
  
# using itertools.chain.from_iterable() + itertools.repeat()
# Alternate Element Repetition
res = list(itertools.chain.from_iterable(itertools.repeat(ele, K) for idx, ele in enumerate(test_list) if idx % 2 == 0))
  
# printing result 
print("The list after alternate repetition elements : " + str(res))
Producción :

The original list : [4, 5, 6]
The list after alternate repeating elements : [4, 4, 4, 6, 6, 6]

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 *