Stary wątek, ale warto o nim wspomnieć: przez większość czasu nie musisz tego robić wcale. Znaki łańcucha Pythona mogą być dostępne bezpośrednio jako lista, tj. s[2]jest „r”, a s[:4]jest „Słowem” i len(s)wynosi 13. Możesz je również iterować:for char in s: print char
domoarigato,
@domoarrigato, ale z powodu innego zachowania srting i listy pod kątem zmienności może być powodem do zrobienia tego.
brainLoop
Odpowiedzi:
227
>>> list("Word to Split")['W','o','r','d',' ','t','o',' ','S','p','l','i','t']
Każdy powód, dla którego wiesz, dlaczego „Word to Split” .split ('') nie robi tego samego. Tak nie jest, ale naprawdę wydaje się, że powinno.
Walter Nissen,
2
@Walter Nissen: Podczas próby wyświetla się komunikat „ValueError: pusty separator”. Puste wyrażenie regularne nie jest zbyt dobrze zdefiniowane.
Greg Hewgill,
Czy nie ma ogranicznika używanego split()do pobierania znaków? split()przyjmuje drugi argument maxsplits , ale nie ma odpowiednika list(). Oczywiście są obejścia ...
Chris_Rands,
20
Najłatwiej jest prawdopodobnie po prostu użyć list(), ale jest też co najmniej jedna inna opcja:
s ="Word to Split"
wordlist = list(s)# option 1,
wordlist =[ch for ch in s]# option 2, list comprehension.
Powinny one zarówno dać ci to, czego potrzebujesz:
Jak już wspomniano, pierwszy jest prawdopodobnie najkorzystniejszy dla twojego przykładu, ale istnieją przypadki użycia, które mogą sprawić, że ten drugi będzie całkiem przydatny w przypadku bardziej złożonych rzeczy, na przykład jeśli chcesz zastosować dowolną funkcję do elementów, na przykład:
Oczywiście 'Word to split'użyte bezpośrednio jest również iterowalne dla własnych znaków, więc wyrażenie generatora jest po prostu bezcelowym zawijaniem.
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]= temp
print("final count of arrival of each letter is : \n", dict(map(lambda x:(x, word_list.count(x)), word_list)))
Najłatwiejszą opcją jest użycie polecenia spit (). Jeśli jednak nie chcesz go używać lub z jakichś bazarowych powodów nie działa, zawsze możesz skorzystać z tej metody.
word ='foo'
splitWord =[]for letter in word:
splitWord.append(letter)print(splitWord)#prints ['f', 'o', 'o']
s[2]
jest „r”, as[:4]
jest „Słowem” ilen(s)
wynosi 13. Możesz je również iterować:for char in s: print char
Odpowiedzi:
źródło
split()
do pobierania znaków?split()
przyjmuje drugi argument maxsplits , ale nie ma odpowiednikalist()
. Oczywiście są obejścia ...Najłatwiej jest prawdopodobnie po prostu użyć
list()
, ale jest też co najmniej jedna inna opcja:Powinny one zarówno dać ci to, czego potrzebujesz:
Jak już wspomniano, pierwszy jest prawdopodobnie najkorzystniejszy dla twojego przykładu, ale istnieją przypadki użycia, które mogą sprawić, że ten drugi będzie całkiem przydatny w przypadku bardziej złożonych rzeczy, na przykład jeśli chcesz zastosować dowolną funkcję do elementów, na przykład:
źródło
Funkcja listy zrobi to
źródło
Nadużycie zasad, ten sam wynik: (x za x w „Wyraz do podziału”)
Właściwie to iterator, a nie lista. Ale prawdopodobnie nie będzie cię to obchodziło.
źródło
'Word to split'
użyte bezpośrednio jest również iterowalne dla własnych znaków, więc wyrażenie generatora jest po prostu bezcelowym zawijaniem.źródło
def count (): list = 'oixfjhibokxnjfklmhjpxesriktglanwekgfvnk'
źródło
Najłatwiejszą opcją jest użycie polecenia spit (). Jeśli jednak nie chcesz go używać lub z jakichś bazarowych powodów nie działa, zawsze możesz skorzystać z tej metody.
źródło