Вы можете использовать понимание списка , которое берет максимум для каждого подсписка l
:
b = [[1, 3, 45, 6, 8], [2, 4, 56, 7]]
c = [max(l) for l in b]
print(c)
Вывод
[45, 56]
Вышеупомянутое понимание списка эквивалентно следующему для цикла:
c = []
for l in b:
c.append(max(l))
Я дам один хороший пример: CLR имеет созданный в объекте RegEx, которому очень недостает SQL Server. Теперь это тривиально для записи функций, чтобы сделать находящиеся в regex ограничения/восстановления проверки.
Различные цели. Хранимая процедура CLR полезна для вещей, где написание очень процессуального кода или использование системных средств, не доступных от T-SQL, имели бы выгоду. Хотя нет никакой свойственной причины, почему нельзя записать приложение sprocs против него, обычно Вы не были бы представление CLR sprocs как просто другой язык для записи приложения sprocs. Как правило, большая часть использования CLR sproc была бы в системных целях, а не компонентах приложения, хотя это ни в коем случае не жесткое правило.
Уровень интеграции CLR предлагает некоторые средства, которые не непосредственно доступны из хранимых процедур T-SQL, таковы как пользовательские агрегатные функции. Это также предлагает доступ к библиотекам .NET, которые могут быть полезны получить доступ к возможностям, которые не может поддерживать T-SQL.
T-SQL делает традиционный материал базы данных и интегрируется с оптимизатором запросов, таким образом, это все еще наиболее подходит для ориентированного на набор кода базы данных. Существуют рычаги API для CLR sprocs для предоставления информации оптимизатору запросов, но это добавляет некоторую сложность.
Можно также использовать интеграцию CLR для определения функций, которые доступны для кода T-SQL. В некоторых случаях они могут быть быстрее и больше памяти, эффективной, чем функции T-SQL. Книга нажатия Wrox по интеграции CLR обсуждает это в некоторой глубине.
Вы можете также, например, назвать внешний Веб-сервис из метода SQLCLR - не точно возможным в T-SQL :-)
Marc