Hướng dẫn python join list with condition - python tham gia danh sách với điều kiện

Bạn đã có câu trả lời của mình, nhưng chỉ muốn thêm vào, rằng không phải tất cả các dấu câu nên bị mắc kẹt ở phía bên trái. Nếu bạn muốn đối phó với các câu chung hơn, ví dụ bạn có thể có dấu ngoặc đơn hoặc dấu nháy đơn và bạn không muốn kết thúc với một cái gì đó như:

Đó là một bộ phim tuyệt vời (hay nhất tôi đã xem)

Tôi muốn nói rằng thật vô nghĩa khi tạo ra một số lớp lót khó chịu, chỉ để làm điều này theo cách pythonic. Nếu bạn không cần giải pháp siêu nhanh, bạn có thể xem xét giải quyết nó từng bước, ví dụ:

import re
s = ['It', "'", 's', 'a', 'great', 'movie', 
     '(', 'best', 'I', "'", 've', 'seen', ')']

s = " ".join(s) # join normally
s = re.sub(" ([,.;\)])", lambda m: m.group(1), s) # stick to left
s = re.sub("([\(]) ", lambda m: m.group(1), s)    # stick to right
s = re.sub(" ([']) ", lambda m: m.group(1), s)    # join both sides

print s # It's a great movie (best I've seen)

Nó khá linh hoạt và bạn có thể chỉ định dấu câu nào được xử lý theo từng quy tắc ... nó có 4 dòng, vì vậy bạn có thể không thích nó. Bất kể bạn chọn phương pháp nào, có lẽ sẽ có một số câu không hoạt động chính xác và cần trường hợp đặc biệt, vì vậy dù sao một lớp có thể chỉ là một lựa chọn tồi.

Chỉnh sửa: Trên thực tế, bạn có thể ký hợp đồng giải pháp trên cho một dòng, nhưng như đã nói trước đây, tôi khá chắc chắn có nhiều trường hợp cần xem xét: Actually, you can contract the above solution to one line, but as said before, I'm pretty sure there are more cases to consider:

print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))

Để tham gia các yếu tố danh sách cụ thể (ví dụ:, với các chỉ số ____9,

print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
0 và
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
1) và trả về chuỗi được nối mà cách kết nối của tất cả các loại, hãy sử dụng biểu thức
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
2. Tuyên bố hiểu danh sách tạo ra một danh sách bao gồm các yếu tố
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
3,
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
4 và
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
5. Phương thức
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
6 kết hợp các phần tử đó bằng cách sử dụng chuỗi trống làm dấu phân cách.

Làm thế nào để tham gia các yếu tố danh sách cụ thể trong Python? [Bốn lớp một]

Hôm nay, tôi tình cờ thấy vấn đề sau đây và tôi thấy nó khá thú vị và có giá trị giáo dục cao.

Vấn đề: Đưa ra một danh sách các chuỗi. Làm thế nào để tham gia các yếu tố danh sách cụ thể và trả về chuỗi đã tham gia mà cách nối của tất cả các yếu tố danh sách cụ thể đó?: Given a list of strings. How to join specific list elements and return the joined string that’s the concatenation of all those specific list elements?

Ví dụ: Bạn đã có danh sách các chuỗi sau đây.

lst = ['hello ', 'bye', 'world', '?', '!']

Bạn muốn tham gia và kết hợp các yếu tố thứ nhất, thứ ba và thứ tư của danh sách.

'hello world!'

Bài viết liên quan: Một biến thể của vấn đề này là tham gia tất cả các phần tử trong một lát cắt và thay thế lát cắt bằng chuỗi được nối. Đọc về giải pháp này trên bài viết blog của tôi.: A variant of this problem is to join all element in a slice and replace the slice with the joined string. Read about this solution on my blog article.

Hướng dẫn python join list with condition - python tham gia danh sách với điều kiện

Ở đây, một cái nhìn tổng quan nhanh về các phương pháp, tôi sẽ thảo luận trong hướng dẫn này:

Tập thể dục: Các yếu tố nối với các chỉ số 1, 2 và 3 với mỗi phương pháp!: Concatenate elements with indices 1, 2, and 3 with each of the methods!

Phương pháp 1: Lập chỉ mục + Concatenation

Nếu bạn chỉ có một vài yếu tố, thì tốt nhất là sử dụng lập chỉ mục đơn giản kết hợp với kết hợp chuỗi

print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
7. Bạn vừa thắng được tìm một giải pháp dễ đọc hơn:

lst = ['hello ', 'bye', 'world', '?', '!']
print(lst[0] + lst[2] + lst[4])
# hello world!

Tuy nhiên, nếu có một sự đều đặn trong các chỉ số của bạn ở chỗ bạn muốn kết hợp mọi yếu tố thứ i trong danh sách của mình, bạn có thể sử dụng cắt lát.

Phương pháp 2: Cắt + Tham gia

Bạn sẽ sử dụng hai khái niệm trong phương pháp này:

  • Cắt để chọn các thành phần chuỗi bạn muốn kết nối.
  • Phương pháp
    print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
    
    8 để kết hợp các yếu tố trong lát cắt.

Cắt lát là một khái niệm để khắc ra một chuỗi con từ một chuỗi nhất định. Sử dụng ký hiệu cắt

print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
9 để truy cập vào mỗi phần tử thứ 20 bắt đầu từ INDEX
lst = ['hello ', 'bye', 'world', '?', '!']
1 (bao gồm) và kết thúc trong INDEX
lst = ['hello ', 'bye', 'world', '?', '!']
2 (loại trừ). Tất cả ba đối số là tùy chọn, vì vậy bạn có thể bỏ qua chúng để sử dụng các giá trị mặc định (
lst = ['hello ', 'bye', 'world', '?', '!']
3,
lst = ['hello ', 'bye', 'world', '?', '!']
4,
lst = ['hello ', 'bye', 'world', '?', '!']
5). Ví dụ, biểu thức
lst = ['hello ', 'bye', 'world', '?', '!']
6 từ chuỗi
lst = ['hello ', 'bye', 'world', '?', '!']
7 khắc ra lát cắt
lst = ['hello ', 'bye', 'world', '?', '!']
8 và biểu thức
lst = ['hello ', 'bye', 'world', '?', '!']
9 khắc ra lát cắt
'hello world!'
0.

Phương thức

'hello world!'
1 tham gia các phần tử chuỗi trong
'hello world!'
2 vào một chuỗi mới bằng cách sử dụng
'hello world!'
3 mà nó được gọi là dấu phân cách.

lst = ['hello ', 'bye', 'world', '?', '!']
print(''.join(lst[::2]))
# hello world!

Phương pháp này hiệu quả hơn vì nó không liên quan đến việc kết hợp nhiều loại dữ liệu bất biến (chuỗi). Điều này tránh việc tạo ra nhiều chuỗi trong bộ nhớ. Ngoài ra, nó còn ngắn gọn hơn ngay cả khi bạn muốn kết hợp những người phụ lớn.

Phương pháp 3: ItemGetter + Tham gia

Nếu không có mô hình chỉ mục của các yếu tố bạn muốn kết nối, bạn không thể sử dụng cắt lát. Trong trường hợp này, tốt nhất là bạn nên truy cập các yếu tố tùy ý từ danh sách của bạn. Bạn có thể sử dụng mô -đun

'hello world!'
4:

from operator import itemgetter
lst = ['hello ', 'bye', 'world', '?', '!']
print(''.join(itemgetter(0, 2, 4)(lst)))
# hello world!

'hello world!'
4 trả về một hàm trả về các phần tử với
'hello world!'
6,
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
0 và
print re.sub("( [,.;\)]|[\(] | ['] )", lambda m: m.group(1).strip(), " ".join(s))
1 từ danh sách (hoặc, tổng quát hơn, có thể đi được) bạn chuyển vào hàm.

Phương pháp 4: Danh sách hiểu + Tham gia

Để tạo danh sách thủ công chỉ có các phần tử 0, 2 và 4, bạn cũng có thể sử dụng cuộc gọi hiểu danh sách ngắn.

lst = ['hello ', 'bye', 'world', '?', '!']
print(''.join([lst[i] for i in [0, 2, 4]]))
# hello world!

Điều này là súc tích, hiệu quả và có thể đọc được (đối với các lập trình viên Python). Bạn thậm chí không cần phải tạo một danh sách nhưng sử dụng biểu thức máy phát để chuyển vào phương thức

'hello world!'
9, có thể hơi pythonic hơn một chút:

lst = ['hello ', 'bye', 'world', '?', '!']
print(''.join(lst[i] for i in [0, 2, 4]))
# hello world!

Đi đâu từ đây?

Đủ lý thuyết. Hãy để có được một số thực hành!

Các lập trình viên được trả tiền sáu con số và hơn thế nữa vì họ có thể giải quyết các vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa.

Để trở nên thành công hơn trong việc mã hóa, giải quyết nhiều vấn đề thực sự hơn cho người thực. Đó là cách bạn đánh bóng các kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, những gì mà việc sử dụng lý thuyết học tập mà không ai cần?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế!

Bạn có muốn ngừng học hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người?

Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà.

Tham gia hội thảo trên web miễn phí ngay bây giờ!

Hướng dẫn python join list with condition - python tham gia danh sách với điều kiện

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

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

Tham gia hai danh sách Có một số cách để tham gia, hoặc concatenate, hai hoặc nhiều danh sách trong Python.Một trong những cách dễ nhất là sử dụng toán tử +.One of the easiest ways are by using the + operator.

Làm thế nào để tham gia () làm việc cho một danh sách?

Lưu ý: Phương thức Jop () cung cấp một cách linh hoạt để tạo các chuỗi từ các đối tượng có thể lặp lại.Nó tham gia vào từng phần tử của một ITEBLE (như danh sách, chuỗi và tuple) bằng một dấu phân cách chuỗi (chuỗi mà phương thức nối () được gọi) và trả về chuỗi được nối.It joins each element of an iterable (such as list, string, and tuple) by a string separator (the string on which the join() method is called) and returns the concatenated string.

Tham gia nhanh hơn python concatenation?

Chuỗi nối nhanh hơn đáng kể sau đó kết hợp.Tại sao?Chuỗi là bất biến và không thể thay đổi tại chỗ.Để thay đổi một, một đại diện mới cần phải được tạo ra (một sự kết hợp của cả hai).. Why? Strings are immutable and can't be changed in place. To alter one, a new representation needs to be created (a concatenation of the two).