Я до сих пор новичок в мире кодирования, и иногда я борюсь с самыми легкими вещами ... Я написал следующий код, который дает мне ValueError: list.remove(x): x not in list
, когда я хочу превышать его. Я уже перебираю копию исходного списка, поэтому я немного потерян. Вот код:Правильное использование функции remove() в Python + looping over copyList
def revrot(strng, sz):
if len(strng) == 0 or sz <= 0 or sz > len(strng):
return ''
else:
list = []
for i in strng:
list.append(i)
rest = len(strng)%sz
for i in range(0,rest):
list.pop()
sum = 0
res = ''
while len(list) != 0:
copyList = list[:]
for i in range(0,sz):
sum += 1
if sum%2 == 0:
list2 = list[:sz]
list2.reverse()
res += ''.join(list2)
print(res)
for i in range(0,sz):
list.remove(copyList[i])
else:
res += ''.join(list[1:]) + ''.join(list[0])
for i in range(0,sz):
list.remove(copyList[i])
return res
Интересная часть начинается с цикла while
. Я думал, что я написал функцию, которая удаляет элементы из list
(в диапазоне (0: sz), поэтому в какой-то момент list
пуст, и вот когда останавливается. То, что у меня не получается: почему моя команда remove()
бросает что ValueError он отлично работает в консоли, когда я проверить его отдельно:.!
copyList
Out[127]: ['1', '2', '3', '4', '5', '6', '7', '7', '9']
for i in range(0,4):
list.remove(copyList[i])
list
Out[129]: ['5', '6', '7', '7', '9']
Вот почему я борюсь найти ошибку, потому что она работает в консоли, но не в редакторе Спасибо за любую помощь
Спасибо за ваш ответ, @MoinuddinQuadri. Я думал, что избавился от этой проблемы, используя copyList [i] в команде remove, так как он не ищет индекс диапазона, вместо этого он идет для copyList [0] = 1 и т. Д., И потому, что я перебираю copyList, а не список диапазона остается оригинал, нет? –