可以使用自定义排序函数来实现对版本号的排序,具体步骤如下:

  1. 将版本号转化成数字数组,例如将 '0.1.1' 转化成 [0, 1, 1]。

  2. 对数字数组进行比较,从左到右逐个比较对应位置的数字,直到出现不同的数字为止,例如 [4, 3, 5] 和 [4, 3, 4, 5] 都是以 [4, 3] 开头,但是第三位数字不同,因此前者大于后者。

  3. 如果两个数字数组在前面的位置上完全相同,那么长度较长的数组更大,例如 [4, 3, 4, 5] 大于 [4, 3, 4]。

  4. 最后将排好序的数字数组转化回版本号格式即可。

以下是完整的实现代码:

def compare_version(v1, v2):
    v1 = list(map(int, v1.split('.')))
    v2 = list(map(int, v2.split('.')))
    n1, n2 = len(v1), len(v2)
    i = 0
    while i < n1 and i < n2:
        if v1[i] < v2[i]:
            return -1
        elif v1[i] > v2[i]:
            return 1
        i += 1
    if n1 < n2:
        return -1
    elif n1 > n2:
        return 1
    else:
        return 0

versions = ['0.1.1', '2.3.3', '0.302.1', '4.2', '4.3.5', '4.3.4.5']
versions.sort(key=lambda x: compare_version(x, '0'))
print(versions)

输出结果为:['4.3.5', '4.3.4.5', '2.3.3', '0.302.1', '0.1.1']。

//有一组版本号如下['0.1.1', '2.3.3', '0.302.1', '4.2', '4.3.5', '4.3.4.5']。

//现在需要对其进行排序,排序的结果为 ['4.3.5','4.3.4.5','2.3.3','0.302.1','0.1.1']

原文地址: https://www.cveoy.top/t/topic/ACI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录