Eu tenho uma lista de números complexos com n elementos, quero verificar quantos dos elementos são reais (a parte imaginária é zero) e, em seguida, classificar minha lista de forma que comece com os números reais.
Por exemplo, para a lista abaixo:
a = [ 7 + 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -1+ 0j, -8 + 4j, -8 - 4j]
dois elementos são reais (primeiro elemento e sexto elemento) Eu quero saber se tenho 2 elementos reais na minha lista e, em seguida, quero ter uma espécie como abaixo que começa com números reais e os outros elementos permanecem inalterados:
b = [ 7 + 0j, -1+ 0j, -2 + 3j, -2 - 3j, 5 + 6j, 5 - 6j, -8 + 4j, -8 - 4j]
Como eu posso fazer isso? obrigado
Você pode classificar os números comparando sua parte imaginária com zero. Aqueles com 0s virão primeiro, os números restantes não serão alterados em sua ordem.
a = sorted(a, key=lambda x:x.imag!=0)
print(a)
Saídas
[(7+0j), (-1+0j), (-2+3j), (-2-3j), (5+6j), (5-6j), (-8+4j), (-8-4j)]
Para obter o número de tais entradas, use
sum(x.imag == 0 for x in a)
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras