我需要在一行代码中显示一个排序数组,在该数组上负数元素被取模(它们在屏幕上显示为负数)。
示例:
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]发布于 2019-09-17 02:40:49
您可以使用abs作为关键函数对列表进行排序:
sorted(data, key=abs)这将返回:
[0, 1, -1, 4, -4, -30, 100, -100, 123]如果希望负值始终排在具有相同绝对值的正值之后,则可以使用返回值的绝对值和负值的二元组的函数:
sorted(data, key=lambda n: (abs(n), -n))https://stackoverflow.com/questions/57962635
复制相似问题