Чи є в python функція розділити слово на список? [дублікат]


100

Чи є в 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 та списку щодо змінності може бути причиною цього.
brainLoop

Відповіді:


226
>>> 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.