Так как это было помечено с помощью NumPy, вот решение только для NumPy:
# input for positive case
C = [[2, 2, 1, 3], [2, 2, 2, 1], [3, 3, 0, 3], [0, 2, 0, 3]]
c_arr = np.array(C) # convert to numpy array
# input for negative case
D = [[2, 2, 1, 3], [2, 2, 2, 1], [3, 3, 0, 3]]
d_arr = np.array(D)
# range to check for
n = 4
Включение всех необходимых условий внутри функции Python (как требуется OP):
def check_condition(n, arr):
if arr.shape[0] == n and np.all(arr >= 0) \
and np.all(arr < n) and arr.dtype == np.int:
return True
else:
return False
# checking for positive case
check_condition(n, c_arr) # returns `True`
# checking for negative case
check_condition(n, d_arr) # returns `False`
Мы в настоящее время используем SubSonic (2.0.3), и это был абсолютный спаситель. Я не могу подчеркнуть достаточно, насколько потрясающий это. ОДНАКО мы теперь смотрим на переключение далеко от него по различным причинам (вероятно, к NHibernate или Объекту). Вот мои За и против него:
Профессионалы:
Недостатки:
У большинства людей будет поверхностное знание опыта с один или два из тех, но у немногих будет воздействие всем. Я рекомендую усилие подтверждения концепции с каждым Вашим избранным. Разбудите каждый набор, тратить не больше, чем n часы на инструмент ORM (n = однако много времени Вы решаете, разумно.) Вы не должны реализовывать свою всю объектную модель, функциональное подмножество сделает.
К тому времени, когда Вы сделаны, Вы будете работать посредством установки и некоторого использования всех их. Можно затем описать вскрытие, и команда может решить, который имеет лучшее отношение боли к функции.
За все парные пенсы это может стоить:
Если у Вас нет 3 недель теперь для изучения предпочтительного ORM (какой бы ни Вы выбираете), Вам, вероятно, придется найти, что 3 недели изучают это позже, когда это не отображает что-то точно, как Вы думали, что это будет.
Если у Вас есть модель, это умеренно сложно, ORM нетривиален. Вы будете волновать необходимость знать, как Ваш ORM работает так, можно сказать этому отображать вещи путем, что Вы хотите.
Который является всем другим способом сказать, "Знают ваши инструменты", конечно.:)
Я очень соглашаюсь с BryCoBat (upvoted). Я хотел также добавить, что, если Вы уже владеете Открытым доступом, затем компания очень вероятно имеет людей где-нибудь внутренне, которые уже очень довольны им, включая примеры кода, на которые Вы смотрите в Вашем собственном домене и для тривиальных и для нетривиальных задач. Другими словами: используйте то, что Вы знаете.
Я бы сказал, что вам стоит взглянуть на DataObjects.NET ( http://www.x-tensive.com ). Это многофункциональный и довольно простой в использовании. Тем не менее, он абсолютно привязывает вас к вашей объектной модели, так как он решает, какая структура базы данных должна быть основана на том, как выглядит ваша объектная модель. При этом, если вы хотите иметь возможность игнорировать существование базы данных, это очень приятно. Мы использовали его в течение многих лет и имели большой успех.
Используйте шаблоны T4 для создания своих собственных. В Интернете есть несколько установленных шаблонов, доступных специально для шаблонов T4. Знание T4 также позволит вам создавать сценарии, которые могут иметь большие масштабы, чем макросы, но меньшие масштабы, чем написание пользовательского приложения для генерации нужного вам сценария. Надеюсь, это поможет!