Comprensión de listas de Python | Ordenar los elementos pares en orden creciente y los impares en orden decreciente

Nos dan una array de n números distintos, la tarea es clasificar todos los números pares en orden creciente y los números impares en orden decreciente. La array modificada debe contener todos los números pares ordenados seguidos de los números impares ordenados inversamente.

Tenga en cuenta que el primer elemento se considera par debido a su índice 0.

Ejemplos:

Input:  arr[] = {0, 1, 2, 3, 4, 5, 6, 7}
Output: arr[] = {0, 2, 4, 6, 7, 5, 3, 1}
Even-place elements : 0, 2, 4, 6
Odd-place elements : 1, 3, 5, 7
Even-place elements in increasing order : 
0, 2, 4, 6
Odd-Place elements in decreasing order : 
7, 5, 3, 1

Input: arr[] = {3, 1, 2, 4, 5, 9, 13, 14, 12}
Output: {2, 3, 5, 12, 13, 14, 9, 4, 1}
Even-place elements : 3, 2, 5, 13, 12
Odd-place elements : 1, 4, 9, 14
Even-place elements in increasing order : 
2, 3, 5, 12, 13
Odd-Place elements in decreasing order : 
14, 9, 4, 1

Tenemos una solución existente para este problema, consulte el enlace Ordenar elementos pares en orden creciente e impar en orden decreciente . Podemos resolver este problema en python rápidamente usando List Comprehension . El enfoque es muy simple,

  1. Separe la lista original en dos partes, una contiene todos los elementos indexados pares y la otra contiene todos los elementos indexados impares.
  2. Ahora ordene la lista que contiene todos los elementos indexados pares en orden ascendente y la lista que contiene todos los elementos indexados impares en orden descendente. Ahora concatene ambos.
# Function to Sort even-placed elements 
# in increasing and odd-placed in decreasing
# order
  
def evenOddSort(input):
  
     # separate even odd indexed elements list
     evens = [ input[i] for i in range(0,len(input)) if i%2==0 ] 
     odds = [ input[i] for i in range(0,len(input)) if i%2!=0 ] 
  
     # sort evens in ascending and odds in 
     # descending using sorted() method
     print (sorted(evens) + sorted(odds,reverse=True))
  
# Driver program
if __name__ == "__main__":
    input = [0, 1, 2, 3, 4, 5, 6, 7]
    evenOddSort(input)

Producción:

[0, 2, 4, 6, 7, 5, 3, 1]

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *