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' ....]

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']

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]

7

Funkcja listy zrobi to

>>> list('foo')
['f', 'o', '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.


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']

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

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']
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.