Làm cách nào để chuyển đổi danh sách thành chuỗi có dấu cách trong Python?


92

Làm cách nào để chuyển đổi một danh sách thành một chuỗi được phân tách bằng dấu cách trong Python?

Ví dụ: tôi muốn chuyển đổi danh sách này:

my_list = [how,are,you]

Vào chuỗi "how are you"

Các khoảng trống là quan trọng. Tôi không muốn có được howareyounhư những gì tôi có với nỗ lực của tôi cho đến nay khi sử dụng

"".join(my_list)

18
Chú giải: Không sử dụng listlàm tên biến.
Tim Pietzcker

Câu trả lời:


195
" ".join(my_list)

bạn cần tham gia với một khoảng trắng không phải là một chuỗi rỗng ...


7
Mã như thế này là lý do tại sao tôi thích Python. Quá dễ.
Josh

điều gì sẽ xảy ra nếu chúng ta có chuỗi ở định dạng này list = ['how ', 'are ', 'you '] thì làm thế nào để chuyển đổi nó thành danh sách.
Muhammad Taqi

1
@MuhammadTaqi sau đó chỉ cần lột phần tử be4 tham gia ..." ".join([i.strip() for i in my_list)
JACK ZHANG

17

Tôi sẽ ném nó vào như một sự thay thế chỉ cho cái quái của nó, mặc dù nó khá vô dụng khi so sánh " ".join(my_list)với chuỗi. Đối với các chuỗi không phải (chẳng hạn như một mảng int), điều này có thể tốt hơn:

" ".join(str(item) for item in my_list)

7

Đối với Non String, listchúng ta cũng có thể làm như thế này

" ".join(map(str, my_list))

2

Vì vậy, để đạt được đầu ra mong muốn, trước tiên chúng ta nên biết chức năng hoạt động như thế nào.

Cú pháp cho join()phương thức như được mô tả trong tài liệu python như sau:

string_name.join(iterable)

Những điều cần lưu ý:

  • Nó trả về một stringnối với các phần tử của iterable. Dấu phân cách giữa các phần tử là string_name.
  • Bất kỳ giá trị không phải chuỗi nào trong giá trị iterablesẽ nâng lênTypeError

Bây giờ, để thêm khoảng trắng , chúng ta chỉ cần thay thế string_namebằng một " "hoặc ' 'cả hai trong số chúng sẽ hoạt động và đặt cái iterablemà chúng ta muốn nối.

Vì vậy, hàm của chúng ta sẽ trông giống như sau:

' '.join(my_list)

Nhưng, điều gì sẽ xảy ra nếu chúng ta muốn thêm một số cụ thể white spacesvào giữa các phần tử của chúng ta trong dấu iterable?

Chúng ta cần thêm điều này:

str(number*" ").join(iterable)

ở đây, numbersẽ là đầu vào của người dùng.

Vì vậy, ví dụ nếu number=4.

Sau đó, đầu ra của str(4*" ").join(my_list)sẽ là how are you, vì vậy ở giữa mỗi từ có 4 khoảng trắng.


1

"".join([i for i in my_list])

Điều này sẽ hoạt động giống như bạn đã yêu cầu!


-9

Tại sao bạn không thêm một khoảng trống trong các mục của danh sách, như:
list = ["how ", "are ", "you "]


Bạn đã viết câu trả lời này theo cách khiến nó có vẻ phù hợp hơn dưới dạng nhận xét. Sẽ có lợi hơn nếu bạn mở rộng câu trả lời này để giải thích tại sao những gì bạn đang đề xuất lại hoạt động.
Andon M. Coleman

1
Đây là không có chức năng trong trường hợp bạn không có quyền truy cập vào danh sách (ví dụ như khi tạo ra với input(a).split(b))
TheSola10

chúng ta không nên thay đổi các dây nội bộ bởi vì nó khiến chúng ta mất đi không gian
Deepak Yadav
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.