Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена в нуль (т. е. она не ссылалась на экземпляр фактического объекта).
Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.
if (myvar != null)
{
// Go ahead and use myvar
myvar.property = ...
}
else
{
// Whoops! myvar is null and cannot be used without first
// assigning it to an instance reference
// Attempting to use myvar here will result in NullReferenceException
}
Чтобы проверить, содержится ли в списке my_list
массив, равный a
, используйте
any((a == x).all() for x in my_list)
Ответ Свена является правильным выбором, если вы хотите сравнить фактическое содержимое массивов. Если вы хотите только проверить, содержится ли в списке один и тот же экземпляр, вы можете использовать
any(a is x for x in mylist)
. Одно преимущество заключается в том, что это будет работать для всех видов объектов.
Вы можете преобразовать массив в список с помощью tolist()
, а затем выполнить проверку:
my_list = [[1,1], [2,2]]
print(np.array([1,1]).tolist() in my_list)
print(np.array([1,2]).tolist() in my_list)
Как насчет этого:
a = array([1, 1])
l = [np.array([1,1]), np.array([2,2])]
list(map(lambda x: np.array_equal(x, a), l)
[True, False]
Если вы ищете тот же самый экземпляр массива в стеке, независимо от того, являются ли данные одинаковыми, вам нужно:
id(a) in map(id, my_list)