Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Gom nhóm chuỗi con tương tự trong danh sách Python


Trong hướng dẫn này, ta viết chương trình gom nhóm các chuỗi con tương tự từ một list. Xem ví dụ để hiểu rõ hơn.

Đầu vào

strings = ['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2', 'javascript-1']

Đầu ra

[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'], ['python-1', 'python-2'], ['javascript-1']]

Ta dùng phương thức groupby từ mô-đun itertools giải quyết vấn đề. groupby gom tất cả chuỗi tương tự vào đối tượng iter. Với list cho trước, ta tách chuỗi bằng dấu - và truyền phần đầu tiên cho phương thức groupby.

Các bước giải quyết:

  • Khởi tạo list chuỗi.
  • Import mô-đun itertools.
  • Khởi tạo list rỗng.
  • Truyền chuỗi và hàm lambda cho itertools.groupby.
  • Hàm lambda trả về phần đầu chuỗi sau tách bằng -.
  • groupby trả về list các tuple với phần tử và nhóm của nó.
  • Mỗi lần lặp, chuyển nhóm phần tử tương tự thành list.
  • Thêm list vào list rỗng.
  • In kết quả.

Ví dụ

# Import mô-đun itertools
import itertools
# Khởi tạo chuỗi
strings = ['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2', 'javascript-1']
# List rỗng
result = []
# Iterator
# Hàm lambda trả về phần đầu từ chuỗi
iterator = itertools.groupby(strings, lambda string: string.split('-')[0])
# Lặp qua kết quả
# Phần tử và nhóm của nó
for element, group in iterator:
    # Thêm nhóm chuyển thành list
    result.append(list(group))
# In kết quả
print(result)

Kết quả

Nếu chạy mã trên, bạn sẽ nhận được kết quả sau.

[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'], ['python-1', 'python-2'], ['javascript-1']]

Kết luận

Nếu có thắc mắc trong hướng dẫn, hãy đề cập ở phần bình luận.