¿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' ....]
gath
fuente
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']
Greg Hewgill
fuente
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]
paxdiablo
fuente
7

La función de lista hará esto

>>> list('foo')
['f', 'o', 'o']
Mez
fuente
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.

Tim Ottinger
fuente
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']
Iris Chen
fuente
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)))
pratiksha
fuente
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']
Aleatorio 375
fuente