GOOGLE ADS

пятница, 15 апреля 2022 г.

Удаление всех элементов списка между индексами без использования встроенных функций Python

def remove_range(array, from_index, to_index):
new = []
for i in array:
if i < array[from_index] or i >= array[to_index]:
new.append(i)
return new
array = [9, 2, 2, 4, 6]
from_index = int(input("Enter a starting point: "))
to_index = int(input("Enter an end point: "))
print(remove_range(array, from_index, to_index))

Цель здесь — удалить из списка все элементы между двумя индексами (включая первый индекс, но исключая второй). Выше вы видите, что я пытался сделать до сих пор, и это, похоже, не работает. Я думаю, это как-то связано со тем, что я сравниваю числа с числами, а не индексы с индексами. Однако я понятия не имею, как правильно применить это на практике прямо сейчас. Кто-нибудь может помочь?

Изменить: любые встроенные функции Python для списков, кроме добавления, не допускаются. Использование квадратных скобок, безусловно, хорошо, но я хотел бы избежать использования двоеточия.


Решение проблемы

В вашем коде iнет index. Это элемент массива. Если вы хотите выполнять логику на основе индексов, используйте явный индекс. Например:

def remove_range(array, from_index, to_index):
new = []
for i in range(len(array)):
if i < from_index or i > to_index:
new.append(array[i])
return new
array = [9, 2, 2, 4, 6]
from_index = 1
to_index = 3
print(remove_range(array, from_index, to_index)) # [9, 6]

Обычно явные индексы предоставляются через enumerate():

def remove_range(array, from_index, to_index):
new = []
for i, el in enumerate(array):
if i < from_index or i > to_index:
new.append(el)
return new

Все это можно было бы записать более кратко как понимание списка:

def remove_range(array, from_index, to_index):
return [e for i, e in enumerate(array) if i < from_index or i > to_index]

Но еще лучше использовать нарезку и объединение списков с помощью +:

def remove_range(array, from_index, to_index):
return array[:from_index] + array[from_index+to_index:]

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...