Respuestas:
En Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
En Python 3 (donde printes una función incorporada y ya no una característica de sintaxis):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Ambos regresan:
[x, 3, b]
Esto está usando la map()función para llamar a str para cada elemento de mylist , creando una nueva lista de cadenas que luego se une en una cadena con str.join(). Luego, el %operador de formato de cadena sustituye la cadena en en lugar de %sen "[%s]".
mapfunción para llamar stra cada elemento de mylist, creando una nueva lista de cadenas que luego une en una cadena str.join. Luego, usa el %operador de formato de cadena para sustituir la cadena en en lugar de %sen "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(o imapen python2.x) sobre (f(x) for x in xs), cuando fes un invocable predefinido; que tiende a ejecutar menos códigos de bytes y suele ser más compacto. Ciertamente, eso no map(lambda x:..., xs) es mucho peor que(... for x in xs)
Este es un código simple, por lo que si es nuevo, debe comprenderlo con bastante facilidad.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Los imprime todos sin comillas, como quisiera.
Si está utilizando Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
En lugar de usar map, recomendaría usar una expresión generadora con la capacidad de joinaceptar un iterador:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Aquí, joines una función miembro de la clase de cadena str. Toma un argumento: una lista (o iterador) de cadenas, luego devuelve una nueva cadena con todos los elementos concatenados por, en este caso ,,.
", ".join( str(x) for x in list_or_iterator).join('[]')
Puede eliminar todos los caracteres no deseados de una cadena utilizando su translate()método con Nonepara el tableargumento seguido de una cadena que contiene los caracteres que desea eliminar para su deletecharsargumento.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Si está utilizando una versión de Python anterior a la 2.6, deberá usar la función stringdel módulo en su translate()lugar porque la capacidad de pasar Nonecomo tableargumento no se agregó hasta Python 2.6. Usarlo se ve así:
import string
print string.translate(str(lst), None, "'")
El uso de la string.translate()función también funcionará en 2.6+, por lo que podría ser preferible usarla.
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]y también conlst = ['it isn\'t', 3, 'b']
Aquí hay una sesión interactiva que muestra algunos de los pasos en una sola línea de @ TokenMacGuy. Primero, usa la mapfunción para convertir cada elemento de la lista en una cadena (en realidad, está creando una nueva lista, no convirtiendo los elementos de la lista anterior). Luego está usando el método de cadena joinpara combinar esas cadenas ', 'entre ellas. El resto es solo formato de cadena, que es bastante sencillo. (Editar: esta instancia es sencilla; el formato de cadena en general puede ser algo complejo).
Tenga en cuenta que usar joines una forma simple y eficiente de construir una cadena a partir de varias subcadenas, mucho más eficiente que hacerlo agregando cadenas sucesivamente a las cadenas, lo que implica una gran cantidad de copias detrás de escena.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Utilizando .formatpara formatear cadenas,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Salida:
[x, 3, b]
Explicación:
mapse utiliza para mapear cada elemento de la lista a stringescribir.,separador.[y ]en la declaración de impresión para mostrar las llaves de la lista.Referencia:
.formatpara formato de cadena PEP-3101
.formatla forma más pitónica. Pero, por supuesto, acepto los desacuerdos. ;)
Me inspiré en @AniMenon para escribir una solución pitónica más general.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Solo usa el formatmétodo. Sin rastro de str, y permite el ajuste fino del formato de los elementos. Por ejemplo, si tiene números flotantes como elementos de la lista, puede ajustar su formato agregando un especificador de conversión, en este caso:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
La salida es bastante decente:
[1.85, -6.33, 4000.21]
print(["Sam"])llamarepr("Sam"), que devuelve'Sam'(con las comillas), a diferencia de cuando llamasprint("Sam")y Python llamastr("Sam")que devuelveSam(sin las comillas). Ver diferencia entrestryrepro Pythonstrylists para obtener más información.