Я думаю, что ваша проблема в том, что вы не изменяете данные, как только условие выполнено. Что-то вроде приведенного ниже кода должно помочь решить вашу проблему:
import numpy as np
def dataLoad(filename):
data=np.loadtxt(filename)
retdata = []
for row in data:
if (row[0] < 10) or (row[0] > 60):
print("Temperature is out of range")
continue
elif (row[1]<0):
print("Growth rate is negative")
continue
elif (row[2]!=1) or (row[2]!=2) or (row[2]!=3) or (row[2]!=4):
print("Bacteria is not 1, 2, 3 or 4")
continue
retdata.append(row)
return retdata
Надеюсь, что поможет.
Я обнаружил, что лямбда-выражения были идеальной парой. Вместо длинного linq к методу объектов я мог сделать это во всего нескольких строках с лямбдой:
foreach(TypeA objectA in listA){
listB.RemoveAll(objectB => objectB.Id == objectA.Id);
}
Вот две опции. Не уверенный, какой быстрее.
listB.RemoveAll(listA.Contains);
foreach (string str in listA.Intersect(listB))
listB.Remove(str);
простой цикл:
for (item i: LISTA) {
removeItem(i, LISTB);
}
method removeItem(Item, List) {
for (Item i: List) {
if (Item == i)
List.removeItem(i);
}
}
Я думаю, что лучший подходящий метод является Микрорабом
Большинство примеров выше для ситуаций, которые два списка являются тем же типом. Но если Вы хотите выдержать сравнение, идентификатор различных типов и хотеть удалить themn лучший способ является путем Микрораба.
Спасибо
Я не знаю, что это - наилучший вариант, но если Вы удаляете все элементы Листы, которые находятся в ListB, просто выполняющем итерации по Листе и использующем, если ListB.contains создают, удаляя его из ListB.
Что-то вроде этого
foreach Object o in ListA
If ListB.contains(o)
ListB.remove(o)
Что-то для ссылки, которая доступна с Библиотекой Универсального набора C5 для.NET, RemoveAll
метод, столь же указанный Todd White прежде. Однако C5 также предлагает другой метод в своих интерфейсах, RetainAll
который делает функциональную противоположность RemoveAll
в этом, с помощью списков исходного автора,
ListB.RetainAll(ListA)
набор { Item1, Item2 }
, тогда как ListB.RemoveAll(ListA)
набор { Item3, Item4 }
.