对 python 中的负整数字符串进行排序
Sorting negative integer strings in python
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”的正确顺序,但出于某种原因,我得到的输出是正数正确但负数不正确。对我做错了什么有任何见解吗?谢谢!
您排序的是 字符串 ,而不是数字,而这些是排序的 lexicographically;就像字典里的单词。 -
恰好排在数字之前,但是 '1'
仍然排在 '3'
之前。此外,'10'
排在 '2'
之前,因为 '1'
在字符 table.
中排在 '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
您可以使用正则表达式:
>>> 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'
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”的正确顺序,但出于某种原因,我得到的输出是正数正确但负数不正确。对我做错了什么有任何见解吗?谢谢!
您排序的是 字符串 ,而不是数字,而这些是排序的 lexicographically;就像字典里的单词。 -
恰好排在数字之前,但是 '1'
仍然排在 '3'
之前。此外,'10'
排在 '2'
之前,因为 '1'
在字符 table.
'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
您可以使用正则表达式:
>>> 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'