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

Python – Sắp xếp danh sách chuỗi theo phần số trong chuỗi

Sắp xếp danh sách chuỗi dựa trên phần số nhúng trong chuỗi. Sử dụng biểu thức chính quy (regex), map() và list().

Mã nguồn

import re

def my_digit_sort(my_list):
    # Tìm tất cả dãy số trong chuỗi, chuyển thành int, lấy số đầu tiên
    return list(map(int, re.findall(r'\d+', my_list)))[0]

my_list = ["pyt23hon", "fu30n", "lea14rn", 'co00l', 'ob8uje3345t']
print("Danh sách gốc:", my_list)

my_list.sort(key=my_digit_sort)
print("Danh sách đã sắp xếp:", my_list)

Kết quả

Danh sách gốc: ['pyt23hon', 'fu30n', 'lea14rn', 'co00l', 'ob8uje3345t']
Danh sách đã sắp xếp: ['co00l', 'ob8uje3345t', 'lea14rn', 'pyt23hon', 'fu30n']

Giải thích

  • re.findall(r'\d+', my_list) tìm tất cả dãy số liên tiếp trong chuỗi.
  • map(int, ...) chuyển các chuỗi số thành số nguyên.
  • list(...)[0] lấy số đầu tiên tìm được làm khóa sắp xếp.
  • Sắp xếp theo giá trị số: 0, 8, 14, 23, 30.

Lưu ý: Nếu chuỗi không chứa số, re.findall trả về list rỗng, gây lỗi IndexError. Cần xử lý trường hợp ngoại lệ.