2012-07-12 16 views
10
x = 'yellow' 
print(sorted(x)) 

vuelveOrdenando las letras de una cadena de texto en Python?

['e', 'l', 'l', 'o', 'w', 'y'] 

Lo que quiero que vuelva

ellowy

Cómo RAN me hacen volver 'ellowy' sin las letras que están en una lista?

+0

Gracias todos para respuestas muy rápidas. Muy útil. –

+3

Aunque stackoverflow es un gran recurso, tenga en cuenta que habría obtenido fácilmente su respuesta buscando en google "list to string python". Estoy 100% seguro de que el primer resultado será la solución correcta. Sin embargo, no te culpo, a veces es difícil encontrar los términos correctos para google, no hay daños y ¡me alegro de que hayas aprendido esto! – Trufa

Respuesta

16

En realidad sorted() cuando se utiliza en una cadena siempre devuelve una lista de personajes individuales. por lo que debe usar str.join() para hacer una cadena de esa lista.

>>> x = 'yellow' 
>>> ''.join(sorted(x)) 
'ellowy' 
9
x = 'yellow' 
print(''.join(sorted(x))) 
+2

Tres respuestas idénticas (correctas) al mismo tiempo ... la única solución es invitarlas a todas. – zebediah49

11

El método de una cadena join() se une a cada elemento de su discusión con copias del objeto cadena dada como delimitador entre cada elemento. Mucha gente encuentra esta una manera extraña y contraria a la intuición de hacer las cosas, pero al unir los elementos con una cadena vacía se puede convertir una lista de cadenas en una sola cadena:

x = 'yellow' 
print(''.join(sorted(x))) 
+0

lol .. ¡3 segundos más rápido! :) –

4

Si desea para Guido hate a usted, trate de:

reduce(lambda l,r: l+r, sorted(x)) 

;-)

en Python 3 que tendría que importarlo desde el paquete functools

+0

lol - ¿voto a favor? ¿blasfemia? :-) –

+1

No he votado negativamente, pero tal vez fue por una solución demasiado complicada para un problema simple. :) – Trufa

+3

-0 para "técnicamente correcto - ¡el mejor tipo de corrección!" –

Cuestiones relacionadas