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']
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.
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:
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+=1print(word_list)['j','u','s','t',' ','t','r','y','i','n','g',' ','o','u','t']
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]= tempprint("final count of arrival of each letter is : \n", dict(map(lambda x:(x, word_list.count(x)), word_list)))
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']
s[2]
é 'r' es[:4]
é 'Palavra' elen(s)
tem 13. Você também pode iterar sobre eles:for char in s: print char
Respostas:
fonte
split()
para obter os caracteres?split()
recebe um segundo argumento maxsplits , mas não há equivalente comlist()
. Claro que existem soluções ...A maneira mais fácil é provavelmente usar
list()
, mas também há pelo menos uma outra opção:Eles devem ambos lhe dar o que você precisa:
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:
fonte
A função de lista fará isso
fonte
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.
fonte
'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.fonte
def count (): list = 'oixfjhibokxnjfklmhjpxesriktglanwekgfvnk'
fonte
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.
fonte