Python: inserte después de cada elemento N en una lista

A veces necesitamos realizar una sola inserción en python, esto se puede hacer fácilmente con la ayuda de la función de inserción. Pero a veces, necesitamos insertar de manera repetida después de cada n números, para eso puede haber numerosas abreviaturas que pueden ser bastante útiles. Vamos a discutir ciertas formas en que esto se puede hacer.

Método n. ° 1: usarjoin() + enumerate()
Podemos usar la función de unión para unir cada una de las n-ésimas substrings con el dígito K y enumerar puede hacer la tarea de realizar la iteración selectiva de la lista.

# Python3 code to demonstrate 
# inserting K after every Nth number
# using join() + enumerate()
  
# initializing list
test_list = ['g', 'e', 'e', 'k', 's', 'f', 'o', 'r',
                            'g', 'e', 'e', 'k', 's']
  
# printing original list
print ("The original list is : " + str(test_list))
  
# initializing k 
k = 'x'
  
# initializing N
N = 3
  
# using join() + enumerate()
# inserting K after every Nth number 
res = list(''.join(i + k * (N % 3 == 2) 
           for N, i in enumerate(test_list)))
  
# printing result 
print ("The lists after insertion : " +  str(res))
Producción:

La lista original es: [‘g’, ‘e’, ​​’e’, ​​’k’, ‘s’, ‘f’, ‘o’, ‘r’, ‘g’, ‘e’, ​​’e’, ‘k’, ‘s’]
Las listas después de la inserción: [‘g’, ‘e’, ​​’e’, ​​’x’, ‘k’, ‘s’, ‘f’, ‘x’, ‘o’, ‘r’, ‘g’, ‘x’, ‘e’, ​​’e’, ​​’k’, ‘x’, ‘s’]

 
Método n.º 2: el usoitertools.chain()
de este método también tiene la capacidad de realizar una tarea similar mediante un iterador y, por lo tanto, una mejora en el rendimiento. Esta función realiza una tarea similar pero usa el método de string para unir las n substrings.

# Python3 code to demonstrate 
# inserting K after every Nth number
# using itertool.chain()
from itertools import chain
  
# initializing list
test_list = ['g', 'e', 'e', 'k', 's', 'f', 'o', 'r',
                            'g', 'e', 'e', 'k', 's']
  
# printing original list
print ("The original list is : " + str(test_list))
  
# initializing k 
k = 'x'
  
# initializing N
N = 3
  
# using itertool.chain()
# inserting K after every Nth number 
res = list(chain(*[test_list[i : i+N] + [k] 
            if len(test_list[i : i+N]) == N 
            else test_list[i : i+N] 
            for i in range(0, len(test_list), N)]))
  
# printing result 
print ("The lists after insertion : " + str(res))
Producción:

La lista original es: [‘g’, ‘e’, ​​’e’, ​​’k’, ‘s’, ‘f’, ‘o’, ‘r’, ‘g’, ‘e’, ​​’e’, ‘k’, ‘s’]
Las listas después de la inserción: [‘g’, ‘e’, ​​’e’, ​​’x’, ‘k’, ‘s’, ‘f’, ‘x’, ‘o’, ‘r’, ‘g’, ‘x’, ‘e’, ​​’e’, ​​’k’, ‘x’, ‘s’]

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 *