首页 > 解决方案 > list.sort(reverse = True) 不将列表更改为降序

问题描述

我正在做一个关于从字符串中提取数字的问题。它指出:

每个测试用例中有不同的数字,您需要找到每个测试用例中的数字。每个测试用例按顺序有不同的编号。您只需要找到那些不包含 9 的数字。例如,如果字符串包含“你好,这是 alpha 5051 和 9475”。您将提取 5051 而不是 9475。

输入格式是第一行将包含测试用例的数量,每个测试用例的第一行将包含字符串。

我们必须输出提取的数字。

我的想法是使用re模块从列表中提取数字,然后按降序排序,然后检查数字是否有效。

我的代码:

import re
for _ in range(int(input())):
    a = input()
    pattern = '\d+'
    result = re.findall(pattern,a)
    result.sort(reverse = True)
    print(result)

但是输出非常有趣。

输出:

1
This is alpha 5057 and 97
['97', '5057']

为什么列表没有按降序排序?

标签: pythonalgorithmsortingdata-structures

解决方案


看起来您需要int先将列表值转换为 s 才能进行排序:

import re
for _ in range(int(input())):
    a = input()
    pattern = '\d+'
    result = re.findall(pattern,a)
    result = map(int, result)
    result.sort(reverse = True)
    print(result)

请参阅mapsort 函数上的 python 文档。


推荐阅读