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

Python – Sắp xếp ma trận theo số lượng palindrome

Khi cần sắp xếp ma trận dựa trên số lượng palindrome (chuỗi đối xứng) trong mỗi hàng, ta định nghĩa hàm đếm palindrome, dùng list comprehension và join/reversed.

Ví dụ

def get_palindrome_count(row):
    return len([element for element in row if ''.join(list(reversed(element))) == element])

my_list = [["abcba", "hdgfue", "abc"], ["peep"], ["py", "is", "best"], ["sees", "level", "non", "noon"]]

print("Danh sách là:")
print(my_list)

my_list.sort(key=get_palindrome_count)

print("Danh sách kết quả:")
print(my_list)

Kết quả đầu ra

Danh sách là:
[['abcba', 'hdgfue', 'abc'], ['peep'], ['py', 'is', 'best'], ['sees', 'level', 'non', 'noon']]
Danh sách kết quả:
[['py', 'is', 'best'], ['abcba', 'hdgfue', 'abc'], ['peep'], ['sees', 'level', 'non', 'noon']]

Giải thích

  • Hàm get_palindrome_count đếm số chuỗi palindrome trong hàng: so sánh chuỗi với chuỗi đảo ngược.
  • Hàng 0: "abcba" là palindrome → 1.
  • Hàng 1: "peep" là palindrome → 1.
  • Hàng 2: không có palindrome → 0.
  • Hàng 3: "sees", "level", "non", "noon" đều là palindrome → 4.
  • sort(key=...) sắp xếp tăng dần theo số lượng: 0, 1, 1, 4.

Cách kiểm tra palindrome hiệu quả hơn: element == element[::-1] thay vì ''.join(list(reversed(element))).