Esiste una funzione in Python per dividere una parola in un elenco? [duplicare]


100

Esiste una funzione in Python per dividere una parola in un elenco di singole lettere? per esempio:

s="Word to Split"

ottenere

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

basta controllare questa documentazione: docs.python.org/library/stdtypes.html

5
Vecchio thread, ma vale la pena menzionarlo: la maggior parte delle volte non è necessario farlo affatto. È possibile accedere direttamente ai caratteri di una stringa Python come elenco, ad es. s[2]è 'r', ed s[:4]è 'Word' ed len(s)è 13. Puoi ripetere anche su di loro:for char in s: print char
domoarigato

@domoarrigato ma a causa del diverso comportamento di srting e list for mutability può essere un motivo per farlo.
brainLoop

Risposte:


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

6
Qualunque motivo tu sappia perché "Word to Split" .split ('') non fa la stessa cosa. Non è così, ma sembra davvero che dovrebbe.
Walter Nissen

2
@ Walter Nissen: ottengo "ValueError: separatore vuoto" quando lo provo. La regex vuota non è molto ben definita.
Greg Hewgill

Non esiste un delimitatore da utilizzare split()per ottenere i caratteri? split()accetta un secondo argomento maxsplits , ma non esiste un equivalente con list(). Ovviamente ci sono soluzioni
alternative

20

Il modo più semplice è probabilmente solo quello di usare list(), ma c'è anche almeno un'altra opzione:

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

Dovrebbero entrambi darvi quello che vi serve:

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

Come affermato, il primo è probabilmente il più preferibile per il tuo esempio, ma ci sono casi d'uso che potrebbero rendere il secondo abbastanza utile per cose più complesse, come se desideri applicare alcune funzioni arbitrarie agli elementi, come con:

[doSomethingWith(ch) for ch in s]

7

La funzione elenco lo farà

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

4

Abuso delle regole, stesso risultato: (x per x in 'Word to split')

In realtà un iteratore, non un elenco. Ma è probabile che non ti importi davvero.


Ovviamente, 'Word to split'usato direttamente è anche un iterabile dei propri caratteri, quindi l'espressione del generatore è solo un involucro 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'opzione più semplice è usare semplicemente il comando spit (). Tuttavia, se non vuoi usarlo o se non funziona per qualche motivo di bazar, puoi sempre usare questo metodo.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.