def sort_int_string(this_string):
split_str = this_string.split()
split_str.sort()
join_str = ' '.join(split_str)
return join_str
>>>print(sort_int_string("4 1 -1 -3"))
-1 -3 1 4
此代码用于生成" -3 -1"的正确顺序。但由于某种原因,我得到的输出正数是正确的,但负数不是。对我做错了什么的见解?谢谢!
答案 0 :(得分:2)
您正在排序字符串,而不是数字,这些是排序lexicographically;喜欢字典中的单词。 -
恰好在数字前排序,但'1'
仍在'3'
之前排序。此外,'10'
在'2'
之前排序,因为'1'
位于字符表中'2'
之前。
通过在排序时将每个元素转换为整数来进行数字排序:
split_str.sort(key=int)
演示,修正后的功能:
>>> def sort_int_string(this_string):
... split_str = this_string.split()
... split_str.sort(key=int)
... join_str = ' '.join(split_str)
... return join_str
...
>>> print(sort_int_string("4 1 -1 -3"))
-3 -1 1 4
答案 1 :(得分:0)
您可以使用正则表达式:
>>> import re
>>> sorted(re.findall(r'-?\d+', "4 1 -1 -3"), key=int)
['-3', '-1', '1', '4']
它按值排序生成字符串。
您可以重新加入字符串:
>>> sor=sorted(re.findall(r'-?\d+', "4 1 -1 -3"), key=int)
>>> ' '.join(sor)
'-3 -1 1 4'