Есть ли в Python функция для разделения слова на список? [дубликат]


101

Есть ли в Python функция для разделения слова на список отдельных букв? например:

s="Word to Split"

получить

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

просто ознакомьтесь с этой документацией: docs.python.org/library/stdtypes.html

5
Старая ветка, но стоит упомянуть: в большинстве случаев вам вообще не нужно этого делать. К символам строки Python можно обращаться напрямую как к списку, т.е. s[2]это 'r', и s[:4]это 'Word', и len(s)это 13. Вы также можете перебирать их:for char in s: print char
domoarigato

@domoarrigato, но из-за разного поведения srting и list для изменчивости может быть причиной для этого.
brainLoop

def show_letters (word): for ch in word: print (ch) show_letters ("Hello")
biddut

Ответы:


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

6
По любой причине, которую вы знаете, почему «Word to Split» .split ('') не делает то же самое. Это не так, но кажется, что должно.
Уолтер Ниссен

2
@Walter Nissen: Я получаю "ValueError: пустой разделитель", пытаясь это сделать. Пустое регулярное выражение не очень хорошо определено.
Грег Хьюгилл

Нет ли разделителя для использования split()символов? split()принимает второй аргумент maxsplits , но для него нет эквивалента list(). Конечно, есть обходные пути ...
Chris_Rands

20

Самый простой способ - это просто использовать list(), но есть еще как минимум один вариант:

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

Они оба должны дать вам то, что вам нужно:

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

Как уже говорилось, первый вариант, вероятно, наиболее предпочтителен для вашего примера, но есть варианты использования, которые могут сделать последний весьма удобным для более сложных вещей, например, если вы хотите применить к элементам некоторую произвольную функцию, например:

[doSomethingWith(ch) for ch in s]


4

Нарушение правил, результат тот же: (x вместо x в 'Word to split')

Собственно итератор, а не список. Но, скорее всего, тебе все равно.


Конечно, 'Word to split'напрямую используется итерация собственных символов, поэтому выражение генератора - это просто бессмысленная упаковка.
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

Самый простой вариант - просто использовать команду spit (). Однако, если вы не хотите использовать его или он не работает по какой-то базарной причине, вы всегда можете использовать этот метод.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.