from time import perf_counter

# Удаление не из правого конца массива это плохо,
# потому что медленно, когда массив большой (кусок массива, который
# правее удалённого элемента надо двигать левее на одну позицию).
# Это делается за вас "внутри" самого питона, но чудес не бывает. Ну почти.
x = [2, -3, 4, -2, 3, -4, 6, 5, -7, -8]
print(x)
x.pop(1)
print(x)
print()

for N in 100, 500, 1000, 5000, 10000, 15000, 50000, 100000, 200000:
    x = list(range(N))
    start = perf_counter()
    while len(x) > 0:
        x.pop()
    print('Size {0:6d}, deleting from right side: {1:.4f}'.format(N, perf_counter() - start))

    x = list(range(N))
    start = perf_counter()
    while len(x) > 0:
        x.pop(0)
    print('Size {0:6d}, deleting from left side: {1:.4f}'.format(N, perf_counter() - start))
    print()


# Как можно действовать, когда вам надо удалить из массива, возможно, много
# элементов, удовлетворяющих какому-то условию
# ОТВЕТ: сделайте второй массив, куда можно добавлять то, что не нужно удалять

# строка x = y[:] нужна для того, чтобы корректно записать результат
# обратно в массив x. Делать это так: x = y формально можно, но получится
# неприятный эффект, которого вы, скорее всего, не ожидали.
# Про это написано (коротко) в справочнике на стр. 25, параграф 4.3
# https://prog.sch57.ru/books/python/python-book-3.pdf, далее по ссылкам

# Пример 1: "удаление" всех отрицательных чисел
x = list(map(int, input('Enter array of integers: ').split()))
y = []
for i in range(len(x)):
    if x[i] >= 0:
        y.append(x[i])
x = y[:]
print(x)

# Пример 2: "удаление" из массива строк всех строк, начинающихся с символа 'A'
x = input('Enter array of strings: ').split()
y = []
for i in range(len(x)):
    if x[i][0] != 'A':
        y.append(x[i])
x = y[:]
print(x)