¿Existe una función en Python para dividir una palabra en una lista? [duplicar]


100

¿Existe una función en Python para dividir una palabra en una lista de letras individuales? p.ej:

s="Word to Split"

Llegar

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

solo consulte esta documentación: docs.python.org/library/stdtypes.html

5
Hilo antiguo, pero vale la pena mencionarlo: la mayoría de las veces no es necesario hacer esto en absoluto. Se puede acceder directamente a los caracteres de una cadena de Python como una lista, es decir. s[2]es 'r', y s[:4]es 'Word' y len(s)es 13. También puede iterar sobre ellos:for char in s: print char
domoarigato

@domoarrigato, pero debido al diferente comportamiento de srting y lista de mutabilidad puede ser una razón para hacer esto.
brainLoop

Respuestas:


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

6
Cualquier motivo que sepa de por qué "Word to Split" .split ('') no hace lo mismo. No es así, pero realmente parece que debería.
Walter Nissen

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

¿No hay un delimitador para usar split()para obtener los caracteres? split()toma un segundo argumento maxsplits , pero no hay equivalente con list(). Por supuesto que hay soluciones ...
Chris_Rands

20

Probablemente, la forma más fácil sea usarla list(), pero también hay al menos otra opción:

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

Deben tanto darle lo que necesita:

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

Como se indicó, el primero es probablemente el más preferible para su ejemplo, pero hay casos de uso que pueden hacer que este último sea bastante útil para cosas más complejas, como si desea aplicar alguna función arbitraria a los elementos, como con:

[doSomethingWith(ch) for ch in s]

7

La función de lista hará esto

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

4

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

En realidad, un iterador, no una lista. Pero es probable que realmente no le importe.


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

1
text = "just trying out"

word_list = []

for i in range(0, len(text)):
    word_list.append(text[i])
    i+=1

print(word_list)

['j', 'u', 's', 't', ' ', 't', 'r', 'y', 'i', 'n', 'g', ' ', 'o', 'u', 't']

0

def count (): list = 'oixfjhibokxnjfklmhjpxesriktglanwekgfvnk'

word_list = []
# dict = {}
for i in range(len(list)):
    word_list.append(list[i])
# word_list1 = sorted(word_list)
for i in range(len(word_list) - 1, 0, -1):
    for j in range(i):
        if word_list[j] > word_list[j + 1]:
            temp = word_list[j]
            word_list[j] = word_list[j + 1]
            word_list[j + 1] = temp
print("final count of arrival of each letter is : \n", dict(map(lambda x: (x, word_list.count(x)), word_list)))

0

La opción más fácil es usar el comando spit (). Sin embargo, si no desea usarlo o la dosis no funciona por alguna razón de bazar, siempre puede usar este método.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.