มีฟังก์ชันใน python เพื่อแบ่งคำออกเป็นรายการหรือไม่? [ซ้ำ]


101

มีฟังก์ชันใน python เพื่อแบ่งคำออกเป็นรายการตัวอักษรเดี่ยวหรือไม่? เช่น:

s="Word to Split"

ที่จะได้รับ

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

เพียงตรวจสอบเอกสารนี้: docs.python.org/library/stdtypes.html

6
กระทู้เก่า แต่น่าพูดถึง: ส่วนใหญ่คุณไม่จำเป็นต้องทำสิ่งนี้เลย สามารถเข้าถึงอักขระของสตริง python เป็นรายการโดยตรงเช่น s[2]เป็น 'r' และs[:4]เป็น 'Word' และlen(s)เป็น 13 คุณสามารถทำซ้ำได้เช่นกัน:for char in s: print char
domoarigato

@domoarrigato แต่เนื่องจากพฤติกรรมที่แตกต่างกันของ srting และ list สำหรับความไม่แน่นอนอาจเป็นสาเหตุให้ทำเช่นนี้
brainLoop

def show_letters (word): for ch in word: print (ch) show_letters ("Hello")
biddut

คำตอบ:


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

6
เหตุผลใดก็ตามที่คุณรู้ว่าทำไม "Word to Split" .split ('') ไม่ทำสิ่งเดียวกัน มันไม่ได้ แต่ดูเหมือนว่ามันควรจะเป็นจริงๆ
Walter Nissen

2
@ Walter Nissen: ฉันได้รับ "ValueError: ตัวคั่นที่ว่างเปล่า" เมื่อลองทำเช่นนั้น นิพจน์ทั่วไปที่ว่างเปล่าไม่ได้ถูกกำหนดไว้อย่างชัดเจน
Greg Hewgill

ไม่มีตัวคั่นสำหรับใช้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


0

นับ def (): 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']
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.