Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – เรียงลำดับสตริงตามส่วนตัวเลข

เมื่อต้องการเรียงลำดับสตริงตามตัวเลขที่อยู่ในสตริง สามารถใช้ regular expression และ re.findall() ได้

ตัวอย่าง

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("The list is :")
print(my_list)
my_list.sort(key=my_num_sort)
print("The result is :")
print(my_list)

ผลลัพธ์

The list is : ['pyth42on', '14is', '32fun', '89to', 'lea78rn']
The result is : ['14is', '32fun', 'pyth42on', 'lea78rn', '89to']

คำอธิบาย

  • นำเข้าโมดูล re

  • กำหนดฟังก์ชัน my_num_sort ใช้ re.findall(r'\d+', my_str) หาตัวเลขทุกกลุ่มในสตริง แปลงเป็น int เอาตัวแรกคืนค่า

  • กำหนดลิสต์สตริงที่มีตัวเลขฝังอยู่ แสดงผล

  • ใช้ sort(key=my_num_sort) เรียงตามตัวเลขที่พบ

  • แสดงผลลัพธ์ที่เรียงแล้ว