Вы могли также сделать
result = ([ a for a,b in original ], [ b for a,b in original ])
, Это должно масштаб лучше. Особенно, если Python выполняет не расширение пониманий списка, если не необходимый.
(Кстати, это делает с 2 кортежами (пара) списков, а не список кортежей, как zip
делает.)
, Если бы генераторы вместо фактических списков в порядке, это сделало бы это:
result = (( a for a,b in original ), ( b for a,b in original ))
генераторы не жуют через список, пока Вы не просите каждый элемент, но с другой стороны, они действительно сохраняют ссылки на исходный список.
LINQ имеет одно большое преимущество перед большинством других методов доступа к данным: он сосредоточен вокруг метафоры « выражение запроса », что означает, что запросы могут передаваться как объекты и изменяться и модифицироваться, все перед они выполняются (повторяются). На практике это означает, что код может быть модульным и лучше изолированным. Репозиторий доступа к данным вернет запрос «заказы», затем промежуточный фильтр в конвейере обработки запросов украсит этот запрос фильтром, затем он будет передан модулю отображения, который добавляет сортировку и разбиение на страницы и т. Д. В конце, когда это повторяется, выражение полностью преобразовалось в очень специфический SELECT ... WHERE ... ORDER BY ... LIMIT ...
(или другая внутренняя пагинация, например ROW_NUMBER). Для разработчиков приложений это бесценно, и жизнеспособной альтернативы просто нет. Вот почему я считаю, что LINQ останется здесь и не исчезнет через 2 года. Это определенно больше, чем просто прихоть. И я конкретно говорю о LINQ как о методе доступа к базе данных.
Одного преимущества манипулирования объектами выражения запроса достаточно, чтобы сделать LINQ выигрышным предложением. Добавьте к этому несколько типов контейнеров, которыми он может манипулировать (XML, массивы и коллекции, объекты, SQL), и единый интерфейс, который он предоставляет для всех этих разрозненных технологий, рассмотрите изменения параллельной обработки, которые появятся в .Net 4.0, которые я ' m наверняка будет прозрачно интегрирован в LINQ-обработку массивов и коллекций, и на самом деле LINQ никуда не исчезнет. Конечно, сегодня он иногда создает нечитаемый, плохо производительный и не поддающийся отладке SQL, и это кошмар для каждого администратора базы данных. Будет лучше.
Linq обеспечивает «первоклассный» доступ к вашим данным. Это означает, что ваши запросы теперь являются частью языка программирования.
Linq предоставляет общий способ доступа к объектам данных всех типов. Например, тот же синтаксис, который используется для доступа к вашим запросам к базе данных, также можно использовать для доступа к спискам, массивам и файлам XML.
Изучение Linq предоставит вам более глубокое понимание языка программирования. Linq был драйвером для всевозможных нововведений языка, таких как методы расширения, анонимные типы, лямбда-выражения, деревья выражений, вывод типов,
Думаю, лучший вопрос: зачем заменять SQL на LINQ при запросе к базе данных?
«Знай своего врага»?
OTOH, из интереса. Я больше узнаю о XMl, XSLT, XSD и т. Д., Потому что вижу их применение как разработчик баз данных.
Это настоящий вопрос? На него нельзя ответить фрагментом кода. Большинство вопросов такого типа быстро закрываются.
Я думаю, это одна из многих причин, по которым можно было бы рассмотреть возможность использования linq, потому что linq - это большое повышение производительности и огромная экономия времени
Этот вопрос также побуждает меня задать вопрос: если LINQ станет чрезвычайно популярным, будут ли разработчики на стороне сервера знать SQL так же хорошо, как их предшественники?