Czy w Pythonie jest funkcja dzieląca słowo na listę? [duplikować]

100

Czy w Pythonie jest funkcja dzieląca słowo na listę pojedynczych liter? na przykład:

s="Word to Split"

dostać

wordlist=['W','o','r','d','','t','o' ....]
gath
źródło
po prostu sprawdź tę dokumentację: docs.python.org/library/stdtypes.html
5
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']
Greg Hewgill
źródło
6
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:

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

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:

[doSomethingWith(ch) for ch in s]
paxdiablo
źródło
7

Funkcja listy zrobi to

>>> list('foo')
['f', 'o', 'o']
Mez
źródło
4

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.

Tim Ottinger
źródło
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+=1

print(word_list)

['j', 'u', 's', 't', ' ', 't', 'r', 'y', 'i', 'n', 'g', ' ', 'o', 'u', 't']
Iris Chen
źródło
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)))
pratiksha
źródło
0

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']
Losowo 375
źródło