可以在其中输入数组[8,2,3+j,1+5j,1]
的东西
其中3+j
被评估为(3^2 + 1^2)^1/2
或abs(3+j)
输出[1,2,3+j,1+5j,8]
将abs
设置为key
将执行以下操作:
l = [8,2,3+1j,1+5j,1]
sorted(l, key=abs)
# [1, 2, (3+1j), (1+5j), 8]
请注意,取复数的abs
,将与您在问题中提到的相同,即取其模数:
abs(5j + 2)
# 5.385164807134504
np.sqrt(5**2 + 2**2)
# 5.385164807134504
还要注意,3+j
是无效的,因为python希望j
是一个变量。要使其成为复杂的文字,j
必须在数字3 + 1j
之后。或者你也可以做complex(3, 1)