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

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

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]

7

Fungsi daftar akan melakukan ini

>>> list('foo')
['f', 'o', 'o']

4

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

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


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

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

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']
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.