Existe uma função em python para dividir uma palavra em uma lista? [duplicado]

100

Existe uma função em python para dividir uma palavra em uma lista de letras únicas? por exemplo:

s="Word to Split"

para obter

wordlist=['W','o','r','d','','t','o' ....]
gath
fonte
basta verificar esta documentação: docs.python.org/library/stdtypes.html
5
Tópico antigo, mas vale a pena mencionar: na maioria das vezes, você não precisa fazer isso. Os caracteres de uma string Python podem ser acessados ​​diretamente como uma lista, ou seja. s[2]é 'r' e s[:4]é 'Palavra' e len(s)tem 13. Você também pode iterar sobre eles:for char in s: print char
domoarigato
@domoarrigato mas devido ao comportamento diferente de srting e lista de mutabilidade pode ser razão para fazer isso.
brainLoop

Respostas:

226
>>> list("Word to Split")
['W', 'o', 'r', 'd', ' ', 't', 'o', ' ', 'S', 'p', 'l', 'i', 't']
Greg Hewgill
fonte
6
Qualquer motivo que você saiba porque "Word to Split" .split ('') não faz a mesma coisa. Não tem, mas realmente parece que deveria.
Walter Nissen de
2
@Walter Nissen: Eu recebo "ValueError: separador vazio" ao tentar isso. A regex vazia não está muito bem definida.
Greg Hewgill
Não há delimitador para usar split()para obter os caracteres? split()recebe um segundo argumento maxsplits , mas não há equivalente com list(). Claro que existem soluções ...
Chris_Rands
20

A maneira mais fácil é provavelmente usar list(), mas também há pelo menos uma outra opção:

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

Eles devem ambos lhe dar o que você precisa:

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

Conforme declarado, o primeiro é provavelmente o mais preferível para o seu exemplo, mas há casos de uso que podem tornar o último bastante útil para coisas mais complexas, como se você quiser aplicar alguma função arbitrária aos itens, como com:

[doSomethingWith(ch) for ch in s]
paxdiablo
fonte
7

A função de lista fará isso

>>> list('foo')
['f', 'o', 'o']
Mez
fonte
4

Abuso das regras, mesmo resultado: (x para x em 'Palavra para dividir')

Na verdade, um iterador, não uma lista. Mas é provável que você realmente não se importe.

Tim Ottinger
fonte
Obviamente, 'Word to split'usado diretamente também é um iterável de seus próprios caracteres, de modo que a expressão geradora é apenas um encapsulamento inútil.
ShadowRanger de
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
fonte
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
fonte
0

A opção mais fácil é apenas usar o comando spit (). No entanto, se você não quiser usá-lo ou se ele não funcionar por algum motivo de bazar, você sempre pode usar este método.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Random 375
fonte