我有一个包含n个元素的复数列表,我想检查有多少个元素是实数(虚数部分为零),然后以以实数开头的方式对列表进行排序。
例如,下面的列表:
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
有两个元素是实数(第一个元素和第六个元素),我想知道列表中有2个实数元素,然后想像下面这样以实数开头的元素,而其他元素保持不变:
b = [ 7 + 0j, -1+ 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -8 + 4j, -8 - 4j]
我怎样才能做到这一点?谢谢
您可以通过将数字的虚部与零进行比较来对数字进行排序。那些数字为0的将排在第一位,其余数字将保持不变。
a = sorted(a, key=lambda x:x.imag!=0)
print(a)
产出
[(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]
要获取此类条目的数量,请使用
sum(x.imag == 0 for x in a)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句