Найти - Пользователи
Полная версия: Удалить элемент
Начало » Центр помощи » Удалить элемент
1 2 3
Dorum
Условие задачи:
Дан список из чисел и индекс элемента в списке k. Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.
Программа получает на вход список, затем число k. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода pop() без параметров.
Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список. Также не следует использовать метод pop(k) с параметром.
 l = []
while len(l) != 6:
    n = int(input("Введите число = "))
    l.append(n)
print(l)
k = int(input("Введите число от 1 до 5 = "))
a = l[k]
l.remove(a)
l.append(a)
print(l.pop())
print(l)
Считаете ли Вы мое решение верным согласно условию? Если же нет - предложите свой вариант.
doza_and
мой вариант
 del a[k]
https://docs.python.org/3/tutorial/datastructures.html#the-del-statement
А тем кто пишет что следует использовать а что нет вежливо объясните что реально важно сколько времени выполняется код и сколько нужно памяти. пущай тоже головой подумают когда задания сочиняюта не в носу ковыряют.
Считаю ваше решение не соответствующим условию.
Где сказано что в списке должно быть ровно 5 элементов?
Задача может быть решенной только при наличии тестов. например для всех кобинаций таких входных
данных
 li=[1,2,3],[]  k=-1,0,1,2,3,"d"
https://docs.python.org/3/library/doctest.html
ZerG
doza_and
Я не стану с Вами спорить однако данная задача имеет под собой определенный смысл
. Так что вполне себе вариант.


FishHook
Dorum
Считаете ли Вы мое решение верным согласно условию?
Как выше сказал комрад doza_and, постановщик задач у вас какой-то на своей волне. Если вас натаскивают на алгоритмы, то питон тут противоречивый выбор, был бы это Си - не возникало бы таких вопросов. Вероятно от вас хотят увидеть работу с массивом, то есть нужно именно перемещать вручную элементы правее k-го. Здесь вы не обойдетесь без len(l) - k присваиваний.
Dorum
doza_and
В плане количества элементов списка все очень условно. Условием задачи мне не предоставляются входные данные. Если же закрыть глаза на количество - приемлемо решение? Ибо из-за витиеватости задачи не могу самолично ответить на этот вопрос. Необходимо независимый вердикт

Кстати, касаемо del тоже отличный вариант. Ибо не идет речи о том, что этот метод использовать запрещено.
Спасибо.
ZerG
Мне кажется данная задача поставленна не на результат а как раз на выполнение условий.
так что пускай..
Dorum
FishHook
Вероятно от вас хотят увидеть работу с массивом, то есть нужно именно перемещать вручную элементы правее k-го. Здесь вы не обойдетесь без len(l) - k присваиваний.

Именно это я и хотел понять. То есть я могу это осуществить путем именно прямого СДВИГА списка вправо пошагово? Пока еще не пришел к этому как, но это дело времени
FishHook
Dorum
Пока еще не пришел к этому как
А что тут такого то? Каждому n-му элементу присваиваете значение (n+1)-го элемента, последний попаете (вам же прям так практически дословно в условии сказали).
Dorum
FishHook
 l = []
while len(l) != 10:
    n = int(input("Введите 10 элементов списка = "))
    l.append(n)
print(l)
k = int(input("Индекс элемента, который будет удален = "))
for i in range(len(l)):
    if i == k:
        for a in range(k, len(l) - 1):
            l[a], l[a + 1] = l[a + 1], l[a]
print(l)
print("Удаленный элемент = ", l.pop())
print("Конечный список:", l)

Что скажите касаемо такого решения?
FishHook
Dorum
Что скажите касаемо такого решения?
Очень плохо.

Вот это вот зачем?
 for i in range(len(l)):
    if i == k:

Вот это вот зачем? Нахрена вам обменивать значение двух элементов?
 l[a], l[a + 1] = l[a + 1], l[a]

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB