Dada una lista, se construye una nueva lista que tiene una frecuencia de elementos mayor o igual a ella, correspondiente a cada elemento de la lista.
Entrada : test_list = [6, 3, 7, 1, 2, 4]
Salida : [2, 4, 1, 6, 5, 3]
Explicación : 6, 7 son mayores o iguales que 6 en la lista, por lo tanto, 2.
Entrada : test_list = [6, 3, 7]
Salida : [2, 3, 1]
Explicación : 6, 7 son mayores o iguales que 6 en la lista, por lo tanto, 2.
Método 1: Usar sum() y comprensión de listas
Aquí, la comprensión de listas anidadas se usa para acceder a cada elemento de la lista y sum() se usa para obtener la suma de los elementos que son mayores o iguales que el elemento indexado.
Python3
# initializing list test_list = [6, 3, 7, 1, 2, 4] # printing original list print("The original list is : " + str(test_list)) # sum() performs counts of element which are Greater or equal to res = [sum(1 for ele in test_list if sub <= ele) for sub in test_list] # printing result print("Greater elements Frequency list : " + str(res))
Producción:
La lista original es: [6, 3, 7, 1, 2, 4]
Elementos mayores Lista de frecuencias: [2, 4, 1, 6, 5, 3]
Método 2: Usar sorted() , bisect_left() y comprensión de listas
En esto, obtenemos elementos más pequeños que el elemento usando bisect_left(). Luego, restando el número así obtenido de la longitud total nos da la cuenta de elementos mayores que el elemento.
Python3
# import module import bisect # initializing list test_list = [6, 3, 7, 1, 2, 4] # printing original list print("The original list is : " + str(test_list)) # sorting before bisect temp = sorted(test_list) # getting total greater elements for each element res = [len(test_list) - bisect.bisect_left(temp, ele) for ele in test_list] # printing result print("Greater elements Frequency list : " + str(res))
Producción:
La lista original es: [6, 3, 7, 1, 2, 4]
Elementos mayores Lista de frecuencias: [2, 4, 1, 6, 5, 3]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA