Форум сайта python.su
Погодите. Давайте сначала. Вот искусственно надуманный, но понятный пример
lst = range(1, 10) # список на входе. step_del = 4 # шаг, ч/з который удалять элементы списка. while 1: """ зафиксируем состояние списка на входе: """ lst_copy = lst[:] """ пройдемся по последовательности от step_del-1 (4-й элемент, индекс 3) с шагом step_del-1 (шаг сокращаем на 1, т.к. с каждым удалением элемента из списка индекс следующего удаляемого элемента уменьшается на 1): """ for i in xrange(step_del-1, len(lst), step_del-1): del lst[i:i+1] # удаляем """ если состояние списка на входе и списка после for идентичны, то значит больше ничего не удаляется и надо завершать цикл while: """ if lst == lst_copy: break print lst >>> [1, 2, 3, 5, 6, 7, 9] [1, 2, 3, 6, 7, 9] [1, 2, 3, 7, 9] [1, 2, 3, 9] [1, 2, 3] >>>
Офлайн
1
ajib6eptУдалится первый элемент.
Перефразирую, вот список . Четвертого элемента нет, что удалять?
Офлайн
1
Вот рабочий вариант:
#!/usr/bin/python # -*- coding: utf-8 -*- import collections N = int(input("Размер списка: ")) P = int(input("Какой элемент удалять: ")) def create_collection(count): global dq dq = collections.deque(range(1, count+1)) return dq def delete_from_collection(to, count): create_collection(count) print(dq) i = 0 while len(dq) > 1: i += 1 #print(i) if i % to == 0: dq.popleft() i = 0 else: dq.rotate(-1) print(dq) return dq delete_from_collection(P, N)
Офлайн
857
Офлайн