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']
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.
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:
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+=1print(word_list)['j','u','s','t',' ','t','r','y','i','n','g',' ','o','u','t']
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]= tempprint("final count of arrival of each letter is : \n", dict(map(lambda x:(x, word_list.count(x)), word_list)))
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']
s[2]
adalah 'r', dans[:4]
adalah 'Word' danlen(s)
13. Anda juga dapat mengulanginya:for char in s: print char
Jawaban:
sumber
split()
untuk mendapatkan karakter?split()
mengambil argumen kedua maxsplits , tetapi tidak ada yang setara denganlist()
. Tentu saja adaCara termudah mungkin hanya dengan menggunakan
list()
, tetapi setidaknya ada satu opsi lain juga:Mereka harus baik memberikan apa yang Anda perlu:
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:
sumber
Fungsi daftar akan melakukan ini
sumber
Penyalahgunaan aturan, hasil yang sama: (x untuk x di 'Word untuk dipisahkan')
Sebenarnya iterator, bukan daftar. Tapi sepertinya Anda tidak akan terlalu peduli.
sumber
'Word to split'
digunakan secara langsung juga merupakan iterable dari karakternya sendiri, jadi ekspresi generator hanyalah pembungkus yang tidak berguna.sumber
def count (): list = 'oixfjhibokxnjfklmhjpxesriktglanwekgfvnk'
sumber
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.
sumber