una sacar palabra misma llenar listas lista intercambiar guardar elementos comparar como buscar agregar python list sorted

sacar - Inserta un elemento en la lista ordenada en Python



llenar una lista en python (5)

Estoy creando una clase donde uno de los métodos inserta un nuevo elemento en la lista ordenada. El artículo se inserta en la posición corregida (clasificada) en la lista ordenada. No tengo permitido usar ninguna función de lista incorporada o métodos que no sean [] , [:] , + y len . Esta es la parte que es realmente confusa para mí.

¿Cuál sería la mejor manera de hacerlo?


Deberías usar el módulo bisect. Además, la lista debe ordenarse antes de usar bisect.insort_left

Es una gran diferencia.

>>> l = [0, 2, 4, 5, 9] >>> bisect.insort_left(l,8) >>> l [0, 2, 4, 5, 8, 9] timeit.timeit("l.append(8); l = sorted(l)",setup="l = [4,2,0,9,5]; import bisect; l = sorted(l)",number=10000) 1.2235019207000732 timeit.timeit("bisect.insort_left(l,8)",setup="l = [4,2,0,9,5]; import bisect; l=sorted(l)",number=10000) 0.041441917419433594


Esta es la mejor manera de agregar la lista e insertar valores en la lista ordenada:

a = [] num = int(input(''How many numbers: '')) for n in range(num): numbers = int(input(''Enter values:'')) a.append(numbers) b = sorted(a) print(b) c = int(input("enter value:")) for i in range(len(b)): if b[i] > c: index = i break d = b[:i] + [c] + b[i:] print(d)`


Esta es una posible solución para usted:

a = [15, 12, 10] b = sorted(a) print b # --> b = [10, 12, 15] c = 13 for i in range(len(b)): if b[i] > c: index = i break d = b[:i] + [c] + b[i:] print d # --> d = [10, 12, 13, 15]


Sugerencia 1: es posible que desee estudiar el código Python en el módulo bisect .

Sugerencia 2: El Slicing se puede utilizar para la inserción de la lista:

>>> s = [''a'', ''b'', ''d'', ''e''] >>> s[2:2] = [''c''] >>> s [''a'', ''b'', ''c'', ''d'', ''e'']


Utilice la función de insort del módulo insort :

>> import bisect >> a = [1, 2, 4, 5] >> bisect.insort(a, 3) >> print(a) [1, 2, 3, 4, 5]