Вы не хотите использовать то, что редактирует границы вашего списка, пока вы над ним работаете.
Я имею в виду что-то вроде
for i in myList :
myList.pop(anything)
ИМХО плохая идея, поскольку i
будет принимать все значения list
до начала цикла, что может вызвать некоторые проблемы (вне диапазона).
Вы можете предпочесть
tempList = []
for i in range(0,len(myList)) :
if myList[i] == ... :
tempList.append(i)
for i in tempList :
myList.pop(i)
С учетом сказанного, из того, что я понимаю, вы хотите отфильтровать любую строку в списке «вещей» (который может содержать строковые лайки "abc"
и числа, отформатированные как строковые лайки "123"
или "-1.2"
.)
Затем следует проверить, является ли ввод float / int, используя что-то вроде
try :
float(in)
except ValueError :
#Not a float nor int
Так что ... в вашем случае я бы пошел на
def filter_list2(elements):
tempList = []
for i in range(0,elements):
try :
temp = float(elements[i])
except ValueError :
tempList.append(i)
if 1.0 <= temp < 50.0:
continue
else:
tempList.append(i)
for i in tempList :
elements.pop(i)
return elements