Có một chức năng nào trong python để chia một từ thành một danh sách không? [bản sao]


100

Có chức năng nào trong python để chia một từ thành danh sách các chữ cái đơn lẻ không? ví dụ:

s="Word to Split"

để có được

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

chỉ cần kiểm tra tài liệu này: docs.python.org/library/stdtypes.html

5
Chủ đề cũ, nhưng nó đáng nói: Hầu hết thời gian bạn không cần phải làm điều này ở tất cả. Các ký tự của một chuỗi python có thể được truy cập trực tiếp dưới dạng danh sách. s[2]là 'r' và s[:4]là 'Lời' và len(s)là 13. Bạn có thể lặp qua chúng cũng như:for char in s: print char
domoarigato

@domoarrigato nhưng do hành vi khác nhau của srting và danh sách có thể thay đổi có thể là lý do để làm điều này.
brainLoop

Câu trả lời:


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

6
Bất kỳ lý do nào bạn biết tại sao "Word to Split" .split ('') không làm điều tương tự. Nó không, nhưng thực sự có vẻ như nó nên làm.
Walter Nissen

2
@Walter Nissen: Tôi nhận được "ValueError: dấu phân cách trống" khi thử điều đó. Regex trống không được xác định rõ ràng.
Greg Hewgill

Không có dấu phân cách để sử dụng split()để lấy các ký tự? split()lấy đối số thứ hai maxsplits , nhưng không có đối số tương đương với list(). Tất nhiên có quanh công việc ...
Chris_Rands

20

Cách dễ nhất có lẽ chỉ là sử dụng list(), nhưng cũng có ít nhất một tùy chọn khác:

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

Cả hai đều phải cung cấp cho bạn những gì bạn cần:

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

Như đã nói, cái đầu tiên có thể là thích hợp nhất cho ví dụ của bạn nhưng có những trường hợp sử dụng có thể khiến cái sau khá tiện dụng cho những thứ phức tạp hơn, chẳng hạn như nếu bạn muốn áp dụng một số chức năng tùy ý cho các mục, chẳng hạn như với:

[doSomethingWith(ch) for ch in s]

7

Hàm danh sách sẽ làm điều này

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

4

Lạm dụng các quy tắc, cùng một kết quả: (x for x trong 'Word to split')

Trên thực tế, một trình lặp, không phải là một danh sách. Nhưng có khả năng bạn sẽ không thực sự quan tâm.


Tất nhiên, 'Word to split'được sử dụng trực tiếp cũng là một ký tự có thể lặp lại của chính nó, vì vậy biểu thức trình tạo chỉ là gói vô nghĩa.
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

Tùy chọn đơn giản nhất là chỉ sử dụng lệnh nhổ (). Tuy nhiên, nếu bạn không muốn sử dụng nó hoặc liều lượng nó không hoạt động vì một số lý do chợ, bạn luôn có thể sử dụng phương pháp này.

word = 'foo'
splitWord = []

for letter in word:
    splitWord.append(letter)

print(splitWord) #prints ['f', 'o', 'o']
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.