【发布时间】:2020-11-30 00:42:58
【问题描述】:
我正在做一个关于从字符串中提取数字的问题。它指出:
每个测试用例中有不同的数字,您需要找到每个测试用例中的数字。每个测试用例按顺序有不同的编号。您只需要找到那些不包含 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']
为什么列表没有按降序排序?
【问题讨论】:
-
你排序的是字符串而不是整数...如果你想按数值排序,你可以使用
result.sort(reverse=True, key=int)。 -
它确实按降序排序。 “9”>“5”。你喂它串;您似乎希望对转换后的数值进行排序。
标签: python algorithm sorting data-structures