Existe-t-il une fonction en python pour diviser un mot en une liste? [dupliquer]


100

Existe-t-il une fonction en python pour diviser un mot en une liste de lettres simples? par exemple:

s="Word to Split"

obtenir

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

il suffit de consulter cette documentation: docs.python.org/library/stdtypes.html

5
Ancien fil, mais cela vaut la peine d'être mentionné: la plupart du temps, vous n'avez pas du tout besoin de le faire. Les caractères d'une chaîne python sont accessibles directement sous forme de liste, c'est-à-dire. s[2]est «r», et s[:4]est «Word» et len(s)vaut 13. Vous pouvez également les parcourir:for char in s: print char
domoarigato

@domoarrigato mais en raison du comportement différent de srting et de la liste de mutabilité peut être une raison de le faire.
brainLoop

Réponses:


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

6
N'importe quelle raison vous savez pourquoi "Word to Split" .split ('') ne fait pas la même chose. Ce n'est pas le cas, mais il semble vraiment que cela devrait.
Walter Nissen

2
@Walter Nissen: J'obtiens "ValueError: empty separator" en essayant cela. Le regex vide n'est pas très bien défini.
Greg Hewgill

N'y a-t-il pas de délimiteur à utiliser split()pour obtenir les caractères? split()prend un deuxième argument maxsplits , mais il n'y a pas d'équivalent avec list(). Bien sûr, il y a des solutions de rechange ...
Chris_Rands

20

Le moyen le plus simple est probablement de l'utiliser list(), mais il existe également au moins une autre option:

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

Ils devraient tous les deux vous donner ce dont vous avez besoin:

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

Comme indiqué, le premier est probablement le plus préférable pour votre exemple, mais il existe des cas d'utilisation qui peuvent rendre ce dernier assez pratique pour des choses plus complexes, par exemple si vous souhaitez appliquer une fonction arbitraire aux éléments, comme avec:

[doSomethingWith(ch) for ch in s]

7

La fonction de liste le fera

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

4

Abus des règles, même résultat: (x pour x dans 'Word to split')

En fait, un itérateur, pas une liste. Mais il est probable que vous ne vous en souciez pas vraiment.


Bien sûr, 'Word to split'utilisé directement est également un itérable de ses propres caractères, de sorte que l'expression du générateur est juste un wrapping inutile.
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

L'option la plus simple consiste simplement à utiliser la commande spit (). Cependant, si vous ne voulez pas l'utiliser ou que cela ne fonctionne pas pour une raison de bazar, vous pouvez toujours utiliser cette méthode.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.