我需要在一行中编写一段代码,该代码将显示一个排序数组,其中负数元素取模(它们在屏幕上显示为负数)
例子:
data = [4, -30, 100, -100, 123, 1, 0, -1, -4]
output:
[0, 1, -1, 4, -4, -30, 100, -100, 123]
data = [4, -30, 100, -100, 123, 1, 0, -1, -4]
def is_module(x):
if x < 0:
return 0
else:
return 1
print(sorted([data[x] for x in range(len(data)) if is_module(data[x])]))
我期望这样:
[0, 1, -1, 4, -4, -30, 100, -100, 123]
最佳答案
你可以用 abs
作为键函数对列表进行排序:
sorted(data, key=abs)
返回:
[0, 1, -1, 4, -4, -30, 100, -100, 123]
如果您希望负值始终排在具有相同绝对值的正值之后,您可以使用返回值的绝对值和负值的二元组的函数来代替:
sorted(data, key=lambda n: (abs(n), -n))
关于python - 如何在单行中按模对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57962635/