Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 1, 2016 12:14:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить элемент

Вам надо одним циклом от к до конца пройтись по списку и если есть следующий элемент то присвоить его значение текущему иначе удалить.



Офлайн

#2 Дек. 1, 2016 12:28:37

Dorum
Зарегистрирован: 2016-11-26
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить элемент

FishHook
Вот это вот зачем?
 for i in range(len(l)):
    if i == k:
Этим я выбираю элемент, начиная с которого буду двигать.

FishHook
Вот это вот зачем?
 l[a], l[a + 1] = l[a + 1], l[a]
Здесь же, собственно, меняю элементы местами.

Поясните свое “нахрена”.

Отредактировано Dorum (Дек. 1, 2016 12:29:07)

Офлайн

#3 Дек. 1, 2016 12:32:47

Dorum
Зарегистрирован: 2016-11-26
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить элемент

Dorum
FishHook
Вот это вот зачем?
 for i in range(len(l)):
    if i == k:
Этим я выбираю элемент, начиная с которого буду двигать.
Так-с, с этим вопросов нет. Понял. Действительно нет необходимости.

Офлайн

#4 Дек. 1, 2016 12:34:16

Dorum
Зарегистрирован: 2016-11-26
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить элемент

Dorum
FishHook
Вот это вот зачем?
 l[a], l[a + 1] = l[a + 1], l[a]
Здесь же, собственно, меняю элементы местами.

Здесь же не улавливаю замечания. Это и есть корень моего решения.

Офлайн

#5 Дек. 1, 2016 13:21:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить элемент

  
l = [0, 1, 2, 3, 4, 5, 6, 7, 8]
k = 3
for index in range(k, len(l)-1):
    l[index] = l[index+1]
l.pop()
print(l)

Вот ваше решение, оно реализуется один в один также как ставится задача, вообще не нужно фантазии.



Отредактировано FishHook (Дек. 1, 2016 13:38:21)

Офлайн

#6 Дек. 1, 2016 13:35:47

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Удалить элемент

FishHook
В условии четко сказанно pop() с параметром использовать НЕЛЬЗЯ!
Другой список использвать НЕЛЬЗЯ



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Дек. 1, 2016 13:38:08

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить элемент

ZerG
Ок, параметр убрал, он ни что не влияет. А другого списка тут нет.



Отредактировано FishHook (Дек. 1, 2016 13:38:37)

Офлайн

#8 Дек. 1, 2016 18:03:02

Dorum
Зарегистрирован: 2016-11-26
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Удалить элемент

FishHook
   
l = [0, 1, 2, 3, 4, 5, 6, 7, 8]
k = 3
for index in range(k, len(l)-1):
    l[index] = l[index+1]
l.pop()
print(l)
Вот ваше решение, оно реализуется один в один также как ставится задача, вообще не нужно фантазии.
Я тщательно изучил Ваше решение. Спасибо за уделенное время.
Но в тоже время с Вами не соглашусь, ибо считаю, что оба решение как и мое, так и Ваше соответсвует условию, но работает по-разному.
Ваше решение на выходе возвращает:
 [0, 1, 2, 4, 4, 5, 6, 7, 8]
[0, 1, 2, 4, 5, 5, 6, 7, 8]
[0, 1, 2, 4, 5, 6, 6, 7, 8]
[0, 1, 2, 4, 5, 6, 7, 7, 8]
[0, 1, 2, 4, 5, 6, 7, 8, 8]
[0, 1, 2, 4, 5, 6, 7, 8]
И, собственно, удаляет элемент, который не соответсвует индексу k. В вашем случает индексу k соответствует 4, а удаляет он последний элемент, который равен 8.

Мой же код пошагово передвигает k-й элемент по списку и в конечном итоге его же и удаляет.
 l = []
while len(l) != 10:
    n = int(input("Введите 10 элементов списка = "))
    l.append(n)
print(l)
k = int(input("Индекс элемента, который будет удален = "))
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 (Дек. 1, 2016 18:07:16)

Офлайн

#9 Дек. 1, 2016 18:08:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить элемент

Dorum
В вашем случает индекс k - это 4
нет, это 3, индексы начинаются с нуля

В вашем случает индекс k - это 4, а удаляет он последний элемент, который равен 8.
То ли я дурак?
Какого элемента не хватает?
 [0, 1, 2, 4, 5, 6, 7, 8]



Отредактировано FishHook (Дек. 1, 2016 18:10:37)

Офлайн

#10 Дек. 1, 2016 18:09:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Удалить элемент

Мой же код пошагово передвигает k-й элемент по списку и в конечном итоге его же и удаляет.
Да делай ты что хочешь, бог с тобой.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version