我需要在一行中编写代码,该代码将显示一个排序的数组,在该数组上以负数为模(它们在屏幕上显示为负数)
例:
data = [4, -30, 100, -100, 123, 1, 0, -1, -4]
output:
[0, 1, -1, 4, -4, -30, 100, -100, 123]
Run Code Online (Sandbox Code Playgroud)
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])]))
Run Code Online (Sandbox Code Playgroud)
我期望这样:
[0, 1, -1, 4, -4, -30, 100, -100, 123]
Run Code Online (Sandbox Code Playgroud)
blh*_*ing 10
您可以将列表排序abs为主要功能:
sorted(data, key=abs)
Run Code Online (Sandbox Code Playgroud)
返回:
[0, 1, -1, 4, -4, -30, 100, -100, 123]
Run Code Online (Sandbox Code Playgroud)
如果希望始终在相同绝对值的正值之后对负值进行排序,则可以使用返回值的绝对值和负值的2元组的函数:
sorted(data, key=lambda n: (abs(n), -n))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |