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']
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.
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.:
'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+=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)))
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']
s[2]
ist 'r' unds[:4]
ist 'Word' undlen(s)
ist 13. Sie können auch darüber iterieren:for char in s: print char
Antworten:
quelle
split()
dem die Zeichen abgerufen werden können?split()
nimmt ein zweites Argument maxsplits , aber es gibt kein Äquivalent mitlist()
. Natürlich gibt esDer einfachste Weg ist wahrscheinlich nur die Verwendung
list()
, aber es gibt auch mindestens eine andere Option:Sie sollten Ihnen beide geben, was Sie brauchen:
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.:
quelle
Die Listenfunktion erledigt dies
quelle
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.
quelle
'Word to split'
Direkt verwendet wird natürlich auch eine Iteration seiner eigenen Zeichen, daher ist der Generatorausdruck nur ein sinnloses Umbrechen.quelle
def count (): list = 'oixfjhibokxnjfklmhjpxesriktglanwekgfvnk'
quelle
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.
quelle