Python 排序(reverse=True)不将列表更改为降序
我正在做一个关于从字符串中提取数字的问题。它指出: 每个测试用例中都有不同的数字,您需要找到每个测试用例中的数字。每个测试用例都有不同的顺序编号。你只需要找到那些不包含9的数字。例如,如果字符串包含“hello this is alpha 5051 and 9475”,则将提取5051而不是9475 输入格式是,第一行将包含测试用例的数量,每个测试用例的第一行将包含字符串 我们必须输出提取的数字 我的想法是使用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
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'. 你用绳子喂它;您似乎希望对转换后的数值进行排序。