Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序(reverse=True)不将列表更改为降序_Python_Algorithm_Sorting_Data Structures - Fatal编程技术网

Python 排序(reverse=True)不将列表更改为降序

Python 排序(reverse=True)不将列表更改为降序,python,algorithm,sorting,data-structures,Python,Algorithm,Sorting,Data Structures,我正在做一个关于从字符串中提取数字的问题。它指出: 每个测试用例中都有不同的数字,您需要找到每个测试用例中的数字。每个测试用例都有不同的顺序编号。你只需要找到那些不包含9的数字。例如,如果字符串包含“hello this is alpha 5051 and 9475”,则将提取5051而不是9475 输入格式是,第一行将包含测试用例的数量,每个测试用例的第一行将包含字符串 我们必须输出提取的数字 我的想法是使用re模块从列表中提取数字,然后按降序排序,然后检查数字是否有效 我的代码: impor

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

每个测试用例中都有不同的数字,您需要找到每个测试用例中的数字。每个测试用例都有不同的顺序编号。你只需要找到那些不包含9的数字。例如,如果字符串包含“hello this is alpha 5051 and 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']

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

看起来您需要先将列表值转换为
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)

请参阅和上的python文档。

您可以对字符串而不是整数进行排序。。。如果您想按数值排序,可以使用
result.sort(reverse=True,key=int)
,它是按降序排序的9' > '5'. 你用绳子喂它;您似乎希望对转换后的数值进行排序。