Как насчет этого:
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]
всегда Пока вы полностью не понимаете различия и последствия использования операторов ==
и ===
, используйте ===
оператор, поскольку он убережет вас от непонятных (неочевидных) ошибок и WTF. «Обычный» оператор ==
может давать очень неожиданные результаты из-за внутреннего приведения типов, поэтому всегда рекомендуется использовать ===
.
Чтобы лучше понять эту и другие «хорошие и плохие» части Javascript, прочитайте о г-не Дугласе Крокфорде и его работе.Есть отличный Google Tech Talk, где он резюмирует много полезной информации: http://www.youtube.com/watch?v=hQVTIJBZook
Обновление:
The You Don’t Know JS Серия Кайла Симпсона превосходна (и доступна для чтения онлайн). В сериале рассматриваются часто неправильно понимаемые области языка и объясняются «плохие части», которых Крокфорд советует избегать. Поняв их, вы сможете правильно их использовать и избежать ловушек.
Книга «Up & Going» включает раздел о равенстве с этим конкретным описанием того, когда следует использовать свободное (==
) и строгое (===
) операторы:
Чтобы свести множество деталей к нескольким простым выводам и помочь вам понять, следует ли использовать
==
или= ==
в различных ситуациях, вот мои простые правила:
- Если какое-либо значение (иначе сторона) в сравнении может быть
истинным
илиложным
, избегайте==
и используйте===
.- Если какое-либо значение в сравнении может иметь эти конкретные значения (
0
,""
или[]
-- пустой массив), избегайте==
и используйте===
.- В всех других случаях можно безопасно использовать
==
. Это не только безопасно, но и во многих случаях упрощает ваш код, повышая его читабельность.
Я по-прежнему рекомендую выступление Крокфорда разработчикам, которые не хотят тратить время на то, чтобы по-настоящему понять Javascript — это хороший совет для разработчика, который лишь изредка работает с Javascript.
Если вы знаете, что это строки, то нет необходимости проверять тип.
"a" == "b"
Однако обратите внимание, что строковые объекты не будут равны.
new String("a") == new String("a")
вернет false.
Вызовите метод valueOf(), чтобы преобразовать его в примитив для объектов String,
new String("a").valueOf() == new String("a").valueOf()
возвратит true