2008-09-22 11 views
62

¿Hay una función en python para dividir una palabra en una lista de letras individuales? por ejemplo:¿Hay una función en python para dividir una palabra en una lista?

s="Word to Split" 

para obtener

wordlist=['W','o','r','d','','t','o' ....] 
+0

simplemente echa un vistazo a esta documentación: http: //docs.python. org/library/stdtypes.html –

+4

Tema antiguo, pero vale la pena mencionarlo: la mayoría de las veces no necesita hacer esto en absoluto. Se puede acceder a los caracteres de una cadena de python como una lista directamente, es decir. 's [2]' es 'r', y 's [: 4]' es 'Palabra' y 'len (s)' es 13. También puede iterar sobre ellos: 'para char en s: imprimir char' – domoarrigato

Respuesta

159
>>> list("Word to Split") 
['W', 'o', 'r', 'd', ' ', 't', 'o', ' ', 'S', 'p', 'l', 'i', 't'] 
+2

Cualquier razón que sepa de por qué "Word to Split" .split ('') no hace lo mismo. No, pero realmente parece que debería. –

+2

@Walter Nissen: Obtengo "ValueError: separador vacío" cuando intento eso. La expresión regular vacía no está muy bien definida. –

+0

¿No hay ningún delimitador para usar 'split()' para obtener los caracteres? 'split()' toma un segundo argumento * maxsplits *, pero no hay equivalente con 'list()'. Por supuesto, hay soluciones alternativas ... –

12

La forma más sencilla es probablemente sólo para usar list(), pero hay al menos otra opción, así:

s = "Word to Split" 
wordlist = list(s)    # option 1, 
wordlist = [ch for ch in s]  # option 2, list comprehension. 

Ellos debería ambos darle lo que necesita:

['W','o','r','d',' ','t','o',' ','S','p','l','i','t'] 

Como se ha indicado, la primera es probablemente el más preferible por su ejemplo, pero hay casos de uso que pueden hacer que este último muy útil para cosas más complejas, como por ejemplo, si desea aplicar alguna función arbitraria de los artículos, por ejemplo con:

[doSomethingWith(ch) for ch in s] 
2

La función de lista hará esto

>>> list('foo') 
['f', 'o', 'o'] 
3

abuso de las reglas, mismo resultado: (x para x en 'Palabra de dividir')

Actualmente es un iterador, no una lista. Pero es probable que en realidad no te importe.

+0

Por supuesto, '' Word to split'' usado directamente también es un iterable de sus propios caracteres, por lo que la expresión del generador es simplemente un ajuste inútil. – ShadowRanger

+0

Creo que esta es la mejor solución. – peterb

1

Aquí es una solución simple una línea

>>> mystring = "This is my string" 
>>> list(mystring) 
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'm', 'y', ' ', 's', 't', 'r', 'i', 'n', 'g'] 

Se puede ver, incluso los espacios en blanco también se convierte en un elemento de la lista

Cuestiones relacionadas