Gibt es in Python eine Funktion, um ein Wort in eine Liste aufzuteilen? [Duplikat]


100

Gibt es in Python eine Funktion, um ein Wort in eine Liste einzelner Buchstaben aufzuteilen? z.B:

s="Word to Split"

bekommen

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


5
Alter Thread, aber es ist erwähnenswert: Meistens müssen Sie dies überhaupt nicht tun. Auf die Zeichen einer Python-Zeichenfolge kann direkt als Liste zugegriffen werden, d. H. s[2]ist 'r' und s[:4]ist 'Word' und len(s)ist 13. Sie können auch darüber iterieren:for char in s: print char
domoarigato

@domoarrigato, aber aufgrund des unterschiedlichen Verhaltens von srting und list for Mutability kann dies ein Grund sein.
brainLoop

Antworten:


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

6
Jeder Grund, warum Sie wissen, warum "Word to Split" .split ('') nicht dasselbe tut. Es tut es nicht, aber es scheint wirklich so, als ob es sollte.
Walter Nissen

2
@Walter Nissen: Ich bekomme "ValueError: leeres Trennzeichen", wenn ich das versuche. Der leere reguläre Ausdruck ist nicht besonders gut definiert.
Greg Hewgill

Gibt es kein Trennzeichen, mit split()dem die Zeichen abgerufen werden können? split()nimmt ein zweites Argument maxsplits , aber es gibt kein Äquivalent mit list(). Natürlich gibt es
Workarounds

20

Der einfachste Weg ist wahrscheinlich nur die Verwendung list(), aber es gibt auch mindestens eine andere Option:

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

Sie sollten Ihnen beide geben, was Sie brauchen:

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

Wie bereits erwähnt, ist der erste für Ihr Beispiel wahrscheinlich am besten geeignet, aber es gibt Anwendungsfälle, die den letzteren für komplexere Aufgaben sehr praktisch machen können, z. B. wenn Sie eine beliebige Funktion auf die Elemente anwenden möchten, z. B.:

[doSomethingWith(ch) for ch in s]

7

Die Listenfunktion erledigt dies

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

4

Missbrauch der Regeln, gleiches Ergebnis: (x für x in 'Word to split')

Eigentlich ein Iterator, keine Liste. Aber es ist wahrscheinlich, dass Sie sich nicht wirklich darum kümmern.


'Word to split'Direkt verwendet wird natürlich auch eine Iteration seiner eigenen Zeichen, daher ist der Generatorausdruck nur ein sinnloses Umbrechen.
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

Am einfachsten ist es, einfach den Befehl spit () zu verwenden. Wenn Sie es jedoch nicht verwenden möchten oder es aus irgendeinem Basargrund nicht funktioniert, können Sie diese Methode jederzeit verwenden.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.