Khi cần sắp xếp danh sách chuỗi theo phần số (numeric part) trong chuỗi, dùng biểu thức chính quy (regular expression) và phương thức findall.
Ví dụ
Minh họa dưới đây:
import re
def my_num_sort(my_str):
return list(map(int, re.findall(r'\d+', my_str)))[0]
my_list = ["pyth42on", '14is', '32fun', '89to', 'lea78rn']
print("Danh sách là:")
print(my_list)
my_list.sort(key=my_num_sort)
print("Kết quả là:")
print(my_list)
Kết quả
Danh sách là: ['pyth42on', '14is', '32fun', '89to', 'lea78rn'] Kết quả là: ['14is', '32fun', 'pyth42on', 'lea78rn', '89to']
Giải thích
- Import gói cần thiết vào môi trường.
- Định nghĩa phương thức nhận chuỗi làm tham số.
- Dùng
findalltìm khớp pattern cụ thể. - Chuyển thành chuỗi dùng
map, rồi thànhlist. - Trả về đầu ra của phương thức.
- Bên ngoài phương thức, định nghĩa danh sách chuỗi và hiển thị ra console.
- Sắp xếp danh sách với key là phương thức đã định nghĩa.
- List này hiển thị là đầu ra trên console.