Кто-то на самом деле недавно задал вопрос , на который я ответил методом расширения Zip
, так что это очевидно важно для некоторых людей. ;)
На самом деле, это довольно важная операция для математических алгоритмов - матрицы, подгонка кривых, интерполяция, распознавание образов и тому подобное. Также очень важно в инженерных приложениях, таких как цифровая обработка сигналов, где большая часть того, что вы делаете, объединяет несколько сигналов или применяет к ним линейное преобразование - оба основаны на индексе отсчетов, следовательно, архивируйте его. Сжатие двух последовательностей намного, намного быстрее, чем сортировка и объединение их по некоторому ключу, особенно если заранее известно, что последовательности имеют одинаковое количество элементов и находятся в одинаковом порядке.
Я не могу вдаваться в подробности из-за моей нынешней работы, но в целом это также полезно для данных телеметрии - промышленных, научных и подобных. Часто у вас есть временные последовательности данных, поступающие из сотен или тысяч точек - параллельных источников - и вам нужно агрегировать, но по горизонтали , по устройствам, а не по времени. В конце вы хотите другую временную последовательность, но с суммой, средним значением или некоторым другим совокупным значением всех отдельных точек.
Это может звучать как простая сортировка / группировка / объединение в SQL Server (например), но на самом деле это действительно сложно сделать эффективно. Во-первых, временные метки могут не совпадать точно, но вам не нужны различия в несколько миллисекунд, поэтому вам придется сгенерировать суррогатный ключ / номер строки и группу для этого - и, конечно, суррогатный номер строки не более чем время index , которое у вас уже было . Молния проста, быстра и бесконечно распараллеливаема.
Я не знаю, назову ли я это основополагающим , но это важно . Я тоже не очень часто использую метод Reverse
, но, к тому же, я рад, что мне не приходится писать его самому в тех редких случаях, когда я испытываю потребность в нем.
Одной из причин, по которой вам может показаться не очень полезным, является то, что в .NET / C # 3.5 нет кортежей. В C # 4 действительно есть кортежи , и когда вы работаете с кортежами, действительно, архивирование является фундаментальной операцией, поскольку порядок строго соблюдается.