Hướng dẫn python join faster than - python tham gia nhanh hơn

Giả sử bạn có mã này để xây dựng một chuỗi từ ba chuỗi:

x = 'foo'
x += 'bar'  # 'foobar'
x += 'baz'  # 'foobarbaz'

Trong trường hợp này, Python trước tiên cần phân bổ và tạo

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
4 trước khi nó có thể phân bổ và tạo
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
5.

Vì vậy, đối với mỗi

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
6 được gọi, toàn bộ nội dung của chuỗi và bất cứ điều gì được thêm vào nó cần phải được sao chép vào bộ đệm bộ nhớ hoàn toàn mới. Nói cách khác, nếu bạn có các chuỗi
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
7 được tham gia, bạn cần phân bổ khoảng
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
7 chuỗi tạm thời và chuỗi con đầu tiên được sao chép ~ n lần. Chất nền cuối cùng chỉ được sao chép một lần, nhưng trung bình, mỗi chuỗi con được sao chép
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
9 lần.

Với

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

0, Python có thể chơi một số thủ thuật vì các chuỗi trung gian không cần phải được tạo. Cpython tìm ra bao nhiêu bộ nhớ cần ở phía trước và sau đó phân bổ một bộ đệm có kích thước chính xác. Cuối cùng, nó sau đó sao chép từng mảnh vào bộ đệm mới, điều đó có nghĩa là mỗi mảnh chỉ được sao chép một lần.


Có những cách tiếp cận khả thi khác có thể dẫn đến hiệu suất tốt hơn cho

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
6 trong một số trường hợp. Ví dụ. Nếu biểu diễn chuỗi bên trong thực sự là
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

2 hoặc nếu thời gian chạy thực sự đủ thông minh để bằng cách nào đó tìm ra rằng các chuỗi tạm thời không sử dụng chương trình và tối ưu hóa chúng.

Tuy nhiên, Cpython chắc chắn không thực hiện các tối ưu hóa này một cách đáng tin cậy (mặc dù có thể sử dụng một vài trường hợp góc) và vì đây là triển khai phổ biến nhất được sử dụng, nhiều thực hành tốt nhất dựa trên những gì hoạt động tốt cho CPython. Có một tập hợp các chỉ tiêu tiêu chuẩn cũng giúp các triển khai khác dễ dàng tập trung vào các nỗ lực tối ưu hóa của họ dễ dàng hơn.

Sử dụng

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

3:

Nội phân chính

  • Làm thế nào để bạn kết hợp các giá trị trong danh sách Python?
  • Làm cách nào để tham gia hai giá trị trong một danh sách?
  • Tôi có thể sử dụng tham gia trên một danh sách python không?
  • Làm thế nào để bạn tham gia hai chuỗi trong một danh sách trong Python?

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'

Mateen Ulhaq

22.2K16 Huy hiệu vàng86 Huy hiệu bạc127 Huy hiệu đồng16 gold badges86 silver badges127 bronze badges

Đã trả lời ngày 17 tháng 9 năm 2012 lúc 5:33Sep 17, 2012 at 5:33

Burhan Khalidburhan KhalidBurhan Khalid

164K18 Huy hiệu vàng238 Huy hiệu bạc276 Huy hiệu Đồng18 gold badges238 silver badges276 bronze badges

11

Một cách chung chung hơn để chuyển đổi danh sách Python thành chuỗi sẽ là:

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

Đã trả lời ngày 1 tháng 12 năm 2015 lúc 3:11Dec 1, 2015 at 3:11

Aaron Saaron sAaron S

4.5534 Huy hiệu vàng28 Huy hiệu bạc29 Huy hiệu đồng4 gold badges28 silver badges29 bronze badges

4

Nó rất hữu ích cho người mới bắt đầu biết tại sao tham gia là một phương thức chuỗi.

Nó rất lạ lúc đầu, nhưng rất hữu ích sau này.

Kết quả của tham gia luôn luôn là một chuỗi, nhưng đối tượng được tham gia có thể thuộc nhiều loại (máy phát điện, danh sách, bộ dữ liệu, v.v.).

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

0 nhanh hơn vì nó chỉ phân bổ bộ nhớ một lần. Tốt hơn so với cách ghép cổ điển (xem, giải thích mở rộng).

Một khi bạn học nó, nó rất thoải mái và bạn có thể thực hiện các thủ thuật như thế này để thêm dấu ngoặc đơn.

>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'

Heilala

6637 Huy hiệu bạc16 Huy hiệu Đồng7 silver badges16 bronze badges

Đã trả lời ngày 14 tháng 5 năm 2016 lúc 13:55May 14, 2016 at 13:55

WallebotwallebotWallebot

6875 Huy hiệu bạc7 Huy hiệu Đồng5 silver badges7 bronze badges

4

Chỉnh sửa từ tương lai: Vui lòng không sử dụng câu trả lời dưới đây. Chức năng này đã được loại bỏ trong Python 3 và Python 2 đã chết. Ngay cả khi bạn vẫn đang sử dụng Python 2, bạn nên viết mã sẵn sàng Python 3 để làm cho việc nâng cấp không thể tránh khỏi dễ dàng hơn.: Please don't use the answer below. This function was removed in Python 3 and Python 2 is dead. Even if you are still using Python 2 you should write Python 3 ready code to make the inevitable upgrade easier.


Mặc dù câu trả lời của @burhan Khalid là tốt, tôi nghĩ rằng nó dễ hiểu hơn như thế này:

from str import join

sentence = ['this','is','a','sentence']

join(sentence, "-") 

Đối số thứ hai để tham gia () là tùy chọn và mặc định là "".

Anupam

14.2K18 Huy hiệu vàng63 Huy hiệu bạc92 Huy hiệu Đồng18 gold badges63 silver badges92 bronze badges

Đã trả lời ngày 2 tháng 11 năm 2015 lúc 1:51Nov 2, 2015 at 1:51

SilentVoidSilentVoidSilentVoid

4925 Huy hiệu bạc10 Huy hiệu đồng5 silver badges10 bronze badges

4

list_abc = ['aaa', 'bbb', 'ccc']

string = ''.join(list_abc)
print(string)
>>> aaabbbccc

string = ','.join(list_abc)
print(string)
>>> aaa,bbb,ccc

string = '-'.join(list_abc)
print(string)
>>> aaa-bbb-ccc

string = '\n'.join(list_abc)
print(string)
>>> aaa
>>> bbb
>>> ccc

Đã trả lời ngày 3 tháng 9 năm 2020 lúc 9:18Sep 3, 2020 at 9:18

Chúng ta cũng có thể sử dụng chức năng

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

5 của Python:

from functools import reduce

sentence = ['this','is','a','sentence']
out_str = str(reduce(lambda x,y: x+"-"+y, sentence))
print(out_str)

người đàn ông thiếc

156K41 Huy hiệu vàng209 Huy hiệu bạc297 Huy hiệu Đồng41 gold badges209 silver badges297 bronze badges

Đã trả lời ngày 29 tháng 11 năm 2018 lúc 11:15Nov 29, 2018 at 11:15

1

Chúng ta có thể chỉ định cách chúng ta tham gia chuỗi. Thay vì

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

6, chúng ta có thể sử dụng
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

7:

sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)

người đàn ông thiếc

156K41 Huy hiệu vàng209 Huy hiệu bạc297 Huy hiệu Đồng41 gold badges209 silver badges297 bronze badges

Đã trả lời ngày 29 tháng 11 năm 2018 lúc 11:15Oct 18, 2019 at 7:46

Chúng ta có thể chỉ định cách chúng ta tham gia chuỗi. Thay vì

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

6, chúng ta có thể sử dụng
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

7:

sentence = ['this','is','a','sentence']
sentences_strings = "'" + "','".join(sentence) + "'"
print (sentences_strings) # you will get "'this','is','a','sentence'"

Đã trả lời ngày 18 tháng 10 năm 2019 lúc 7:46

Nếu bạn muốn tạo một chuỗi các chuỗi được phân tách bằng dấu phẩy trong kết quả cuối cùng, bạn có thể sử dụng một cái gì đó như thế này:15 gold badges37 silver badges54 bronze badges

TomerikooJun 30, 2020 at 15:20

16.6K15 Huy hiệu vàng37 Huy hiệu bạc54 Huy hiệu đồngCarmoreno

Đã trả lời ngày 30 tháng 6 năm 2020 lúc 15:2015 silver badges26 bronze badges

Carmorenocarmoreno

1.15815 huy hiệu bạc26 Huy hiệu đồng

>>> aa
[None, 10, 'hello']

Nếu bạn có một danh sách nội dung hỗn hợp và muốn xâu chuỗi nó, thì đây là một cách:

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
0

Xem xét danh sách này:

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
1

người đàn ông thiếc

156K41 Huy hiệu vàng209 Huy hiệu bạc297 Huy hiệu Đồng41 gold badges209 silver badges297 bronze badges

Đã trả lời ngày 29 tháng 11 năm 2018 lúc 11:15Jan 27, 2021 at 10:21

1

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
2

Chúng ta có thể chỉ định cách chúng ta tham gia chuỗi. Thay vì

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

6, chúng ta có thể sử dụng
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)

7:

Đã trả lời ngày 18 tháng 10 năm 2019 lúc 7:4627 gold badges80 silver badges88 bronze badges

Nếu bạn muốn tạo một chuỗi các chuỗi được phân tách bằng dấu phẩy trong kết quả cuối cùng, bạn có thể sử dụng một cái gì đó như thế này:May 7, 2020 at 21:18

1

Tomerikoo

16.6K15 Huy hiệu vàng37 Huy hiệu bạc54 Huy hiệu đồng

Đã trả lời ngày 30 tháng 6 năm 2020 lúc 15:20

CarmorenocarmorenoJul 7, 2020 at 11:03

Làm thế nào để bạn kết hợp các giá trị trong danh sách Python?

Làm cách nào để tham gia hai giá trị trong một danh sách?using the concatenation operator(+). The “+” operator can easily join the whole list behind another list and provide you with the new list as the final output as shown in the below example.

Làm cách nào để tham gia hai giá trị trong một danh sách?

Tôi có thể sử dụng tham gia trên một danh sách python không?.

Mateen Ulhaq

22.2K16 Huy hiệu vàng86 Huy hiệu bạc127 Huy hiệu đồng

Đã trả lời ngày 17 tháng 9 năm 2012 lúc 5:33

Burhan Khalidburhan Khalid

164K18 Huy hiệu vàng238 Huy hiệu bạc276 Huy hiệu Đồng

Một cách chung chung hơn để chuyển đổi danh sách Python thành chuỗi sẽ là:

Tôi có thể sử dụng tham gia trên một danh sách python không?

Mateen UlhaqWe can use the python string join() function for joining a list of the strings. However, this function takes iterable as an argument and the list is iterable, so we are able to use it with the list.

Làm thế nào để bạn tham gia hai chuỗi trong một danh sách trong Python?

Kết hợp chuỗi trong Python..

Sử dụng + toán tử ..

Sử dụng phương thức tham gia () ..

Sử dụng nhà điều hành % ..

Sử dụng hàm định dạng () ..

Sử dụng, (dấu phẩy).