Estoy tratando de tomar una cadena, y agregarla a cada cadena contenida en una lista, y luego tener una nueva lista con las cadenas completadas. Ejemplo:
list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
*magic*
list2 = ['foobar', 'fobbar', 'fazbar', 'funkbar']
Traté de bucles, y un intento de comprensión de la lista, pero fue basura. Como siempre, cualquier ayuda, muy apreciada.
list
ya que es un incorporado.Respuestas:
La forma más sencilla de hacerlo es con una lista de comprensión:
Tenga en cuenta que evité usar nombres incorporados como
list
porque eso oculta u oculta los nombres incorporados, lo que no es bueno.Además, si realmente no necesita una lista, pero solo necesita un iterador, una expresión generadora puede ser más eficiente (aunque probablemente no importe en listas cortas):
Estos son muy poderosos, flexibles y concisos. Todo buen programador de Python debería aprender a manejarlos.
fuente
(s + mystring for s in mylist)
["{}) {}".format(i, s) for i, s in enumerate(mylist)]
list2 = ["mystring" + s for s in mylist]
=list2 = ['barfoo', 'barfob', 'barfaz', 'barfunk']
Esto imprimirá:
fuente
map
me parece la herramienta adecuada para el trabajo.Consulte esta sección sobre herramientas de programación funcional para obtener más ejemplos de
map
.fuente
Ejecutando el siguiente experimento de la manera pitónica:
parece ser ~ 35% más rápido que el uso obvio de un bucle for como este:
Experimentar
Resultados
fuente
Extendiendo un poco a "Agregar una lista de cadenas a una lista de cadenas":
Resultado:
dtype odject puede convertirse aún más str
fuente
at = np.full(fill_value='@',shape=1,dtype=object)
o simplemente:at = np.array("@", dtype=object)
puedes usar lambda dentro del mapa en python. escribió un generador de códigos grises. https://github.com/rdm750/rdm750.github.io/blob/master/python/gray_code_generator.py # su código va aquí '' 'el código de bit n-1, con 0 antepuesto a cada palabra, seguido por el código de n-1 bit en orden inverso, con 1 antepuesto a cada palabra. '' '
fuente
Actualizando con más opciones
Evite usar palabras clave como variables como 'lista', en su lugar cambie el nombre de 'lista' como 'lista1'
fuente
Aquí hay una respuesta simple usando
pandas
.fuente
Y no lo uses
list
como nombre; sombrea el tipo incorporado.fuente
'%sbar' % (x,)
lugar de'%sbar' % x
? ¿Por qué nox + 'bar'
?El uso de nombres como "lista" para sus nombres de variables es malo, ya que sobrescribirá / anulará los valores incorporados.
fuente
Por si acaso
fuente