Apakah ada fungsi dalam python untuk membagi kata menjadi daftar? [duplikat]

100

Apakah ada fungsi di python untuk membagi kata menjadi daftar huruf tunggal? misalnya:

s="Word to Split"

mendapatkan

wordlist=['W','o','r','d','','t','o' ....]
gath
sumber
cukup periksa dokumentasi ini: docs.python.org/library/stdtypes.html
5
Utas lama, tetapi perlu disebutkan: Seringkali Anda tidak perlu melakukan ini sama sekali. Karakter dari string python dapat diakses sebagai daftar secara langsung yaitu. s[2]adalah 'r', dan s[:4]adalah 'Word' dan len(s)13. Anda juga dapat mengulanginya:for char in s: print char
domoarigato
@domoarrigato tetapi karena perilaku srting dan list yang berbeda untuk mutabilitas dapat menjadi alasan untuk melakukan ini.
brainLoop

Jawaban:

227
>>> list("Word to Split")
['W', 'o', 'r', 'd', ' ', 't', 'o', ' ', 'S', 'p', 'l', 'i', 't']
Greg Hewgill
sumber
6
Setiap alasan Anda tahu mengapa "Word to Split" .split ('') tidak melakukan hal yang sama. Tidak, tapi sepertinya memang seharusnya begitu.
Walter Nissen
2
@Walter Nissen: Saya mendapatkan "ValueError: separator kosong" saat mencobanya. Regex kosong tidak didefinisikan dengan baik.
Greg Hewgill
Apakah tidak ada pembatas yang digunakan split()untuk mendapatkan karakter? split()mengambil argumen kedua maxsplits , tetapi tidak ada yang setara dengan list(). Tentu saja ada
solusi
20

Cara termudah mungkin hanya dengan menggunakan list(), tetapi setidaknya ada satu opsi lain juga:

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

Mereka harus baik memberikan apa yang Anda perlu:

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

Seperti yang dinyatakan, yang pertama mungkin yang paling disukai untuk contoh Anda, tetapi ada kasus penggunaan yang mungkin membuat yang terakhir cukup berguna untuk hal-hal yang lebih kompleks, seperti jika Anda ingin menerapkan beberapa fungsi arbitrer ke item, seperti dengan:

[doSomethingWith(ch) for ch in s]
paxdiablo
sumber
7

Fungsi daftar akan melakukan ini

>>> list('foo')
['f', 'o', 'o']
Mez
sumber
4

Penyalahgunaan aturan, hasil yang sama: (x untuk x di 'Word untuk dipisahkan')

Sebenarnya iterator, bukan daftar. Tapi sepertinya Anda tidak akan terlalu peduli.

Tim Ottinger
sumber
Tentu saja, 'Word to split'digunakan secara langsung juga merupakan iterable dari karakternya sendiri, jadi ekspresi generator hanyalah pembungkus yang tidak berguna.
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
sumber
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
sumber
0

Opsi termudah adalah dengan hanya menggunakan perintah spit (). Namun, jika Anda tidak ingin menggunakannya atau dosisnya tidak berfungsi karena alasan bazaar, Anda selalu dapat menggunakan metode ini.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Acak 375
sumber