У меня есть два списка одинаковой длины:Удалить элемент из списка, если он удовлетворяет условие, определенное из отдельного списка - Python
Offset = [-0.0002, -0.0004, -0.0004, -0.006, -0.0006, -0.0006, -0.0066, -0.0007, -0.0007, -0.0008]
Ratio = [0.0641, 0.152, 0.254, 0.246, 0.3197, 0.3249, 2.8795, 0.4286, 0.5191, 0.5712]
Что я хотел бы сделать, это создать список, элементы которого происходит от смещения при условии, что соответствующий элемент в коэффициенте составляет менее 2.5
. Итак, для двух списков выше, 6-й элемент в Ratio больше 2.5
, и я хочу, чтобы затем удалить 6-й элемент в Offset и вернуть все остальные элементы.
Я пытался сделать список понимание, моя попытка:
Data = [x for n in Ratio[n] for x in Offset if Ratio[n] < 2.5]
Однако это производит объект «numpy.float64» ошибка не итератора», который от чтения this question я могу понять, почему я получить ошибку, но я не уверен, как сделать работу по составлению списка.
Этот цикл, кажется, находится на правильных дорожках, но a) я бы предпочел понимание списка и b) Я не думаю, что вы можете удалять элементы в списке, итерации по нему.
for n in range(len(Ratio)):
if Ratio[n] < 2.5:
#Keep the element Offset[n]
else:
#Delete the element Offset[n]
Просто хотел добавить что-то, что может вас заинтересовать. В Python вы можете удалять элементы из списка, итерации по нему. Вам просто нужно повторить BACKWARDS, чтобы смена списка не влияла на ваш будущий путь. Это позволит избежать любых ошибок вне границ с индексами списка. – Shashank
Я этого не знал, спасибо. – Holtz