Форум сайта python.su
Условие задачи:
Дан список из чисел и индекс элемента в списке 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)
Офлайн
мой вариант
del a[k]
li=[1,2,3],[] k=-1,0,1,2,3,"d"
Отредактировано doza_and (Дек. 1, 2016 06:47:29)
Офлайн
doza_and
Я не стану с Вами спорить однако данная задача имеет под собой определенный смысл
. Так что вполне себе вариант.
Офлайн
DorumКак выше сказал комрад doza_and, постановщик задач у вас какой-то на своей волне. Если вас натаскивают на алгоритмы, то питон тут противоречивый выбор, был бы это Си - не возникало бы таких вопросов. Вероятно от вас хотят увидеть работу с массивом, то есть нужно именно перемещать вручную элементы правее k-го. Здесь вы не обойдетесь без len(l) - k присваиваний.
Считаете ли Вы мое решение верным согласно условию?
Офлайн
doza_andВ плане количества элементов списка все очень условно. Условием задачи мне не предоставляются входные данные. Если же закрыть глаза на количество - приемлемо решение? Ибо из-за витиеватости задачи не могу самолично ответить на этот вопрос. Необходимо независимый вердикт
Отредактировано Dorum (Дек. 1, 2016 09:29:23)
Офлайн
Мне кажется данная задача поставленна не на результат а как раз на выполнение условий.
так что пускай..
Офлайн
FishHook
Вероятно от вас хотят увидеть работу с массивом, то есть нужно именно перемещать вручную элементы правее k-го. Здесь вы не обойдетесь без len(l) - k присваиваний.
Офлайн
DorumА что тут такого то? Каждому n-му элементу присваиваете значение (n+1)-го элемента, последний попаете (вам же прям так практически дословно в условии сказали).
Пока еще не пришел к этому как
Офлайн
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)
Офлайн
DorumОчень плохо.
Что скажите касаемо такого решения?
for i in range(len(l)): if i == k:
l[a], l[a + 1] = l[a + 1], l[a]
Офлайн