Python'da bir kelimeyi listeye bölme işlevi var mı? [çiftleme]


101

Python'da bir kelimeyi tek harflerden oluşan bir listeye bölme işlevi var mı? Örneğin:

s="Word to Split"

almak

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

sadece şu dokümantasyona göz atın

5
Eski iş parçacığı, ancak bahsetmeye değer: Çoğu zaman bunu yapmanıza gerek yok. Bir python dizesinin karakterlerine doğrudan bir liste olarak erişilebilir, örn. s[2]'r' ve s[:4]'Kelime' ve len(s)13'tür. Bunların üzerinde de yineleme yapabilirsiniz:for char in s: print char
domoarigato

@domoarrigato, ancak farklı srting davranışı ve değişkenlik listesi nedeniyle bunu yapmak için bir neden olabilir.
brainLoop

def show_letters (kelime): kelimede ch için: baskı (ch) show_letters ("Merhaba")
biddut

Yanıtlar:


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

6
"Bölünecek Kelime" .split ('') 'in neden aynı şeyi yapmadığını bilmenizin herhangi bir nedeni. Öyle değil, ama gerçekten olması gerektiği gibi görünüyor.
Walter Nissen

2
@Walter Nissen: Bunu denediğimde "ValueError: boş ayırıcı" alıyorum. Boş normal ifade çok iyi tanımlanmamıştır.
Greg Hewgill

split()Karakterleri almak için kullanılacak sınırlayıcı yok mu? split()ikinci bir argüman alır maxsplits , ancak eşdeğeri yoktur list(). Elbette
geçici

20

En kolay yol muhtemelen sadece kullanmaktır list(), ancak en az bir seçenek daha vardır:

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

İkisi de size ihtiyacınız olanı vermeli :

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

Belirtildiği gibi, birincisi muhtemelen örneğiniz için en çok tercih edilenidir, ancak ikincisini daha karmaşık şeyler için oldukça kullanışlı hale getirebilecek kullanım durumları vardır, örneğin öğelere rastgele bazı işlevler uygulamak istiyorsanız, örneğin:

[doSomethingWith(ch) for ch in s]

8

Liste işlevi bunu yapacak

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

4

Kuralların kötüye kullanılması, aynı sonuç: ('Bölünecek Word'de' x için x)

Aslında bir yineleyici, bir liste değil. Ama muhtemelen gerçekten umursamayacaksın.


Tabii ki, 'Word to split'doğrudan kullanılan kendi karakterlerinin bir yinelenebiliridir, bu nedenle oluşturucu ifadesi sadece anlamsız bir sarmalamadır.
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

En kolay seçenek sadece spit () komutunu kullanmaktır. Ancak kullanmak istemiyorsanız ya da bazı çarşı sebeplerinden dolayı çalışmıyorsa bu yöntemi her zaman kullanabilirsiniz.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.