如何使用复数的绝对值对包含复数的列表进行排序



可以在其中输入数组[8,2,3+j,1+5j,1]的东西

其中3+j被评估为(3^2 + 1^2)^1/2abs(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)

最新更新