Подтвердить что ты не робот

Вставить элемент в отсортированный список в Python

Я создаю класс, в котором один из методов вставляет новый элемент в отсортированный список. Элемент вставлен в скорректированное (отсортированное) положение в отсортированном списке. Мне не разрешено использовать какие-либо встроенные функции списка или методы, отличные от [], [:], + и len. Это та часть, которая меня действительно сбивает с толку.

Что было бы лучше всего в этом?

4b9b3361

Ответ 1

Подсказка 1. Вы можете изучить код Python в bisect module.

Подсказка 2: Slicing можно использовать для вставки списка:

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

Ответ 2

Используйте insort функцию bisect:

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

Ответ 3

Вы должны использовать модуль bisect. Кроме того, список необходимо отсортировать перед использованием bisect.insort_left

Это довольно большая разница.

>>> 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

Ответ 4

Это возможное решение для вас:

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]

Ответ 5

Это лучший способ добавить список и вставить значения в отсортированный список:

 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)`