Здравствуйте, vfedosov, Вы писали:
V>Ну вот к примеру +- типичная задача: нужно развернуть индекс: есть индекс по одному ключу, надо построить по другому. В пайтоне решается так:
V>names2data = {"name1": (1, 3, "str1"), "name2": (2, 4, "str2")}
V>data2names = {data[1]: name for name, data in names2data.items()}
Не очень понимаю синтаксис — что делает эта штука?
V>я не в курсе, может последние версии шарпа позволяют коротко эту задачу решить — уж лет 6-7 не работаю с шарпом, но пайтон и 10 лет назад это поддерживал. Насколько кратко можно проинициализировать сложную структуру данных и насколько легко с ней работать! Кстати работает мега быстро в отличии от довольно медленного Linq.
V>Или обработка массивов float — работает почти как на плюсах по скорости. Имеем двумерный numpy массив — картинку (яркости пикселей нормированы к 1.0), надо сделать ярче в 1.5 раза, но значения не должны быть больше 1.0:
V>array_2d = np.min(array_2d * 1.5, 1.0)
V>Может слегка с синтаксисом в примерах накосячил (влом проверять) — но суть такая.
V>Представь чего на шарпе придется нагородить для этого
Ну, вот я себе хорошо это представляю.
array_2d = (from a in array_2d select Math.Min(a*1.5, 1.0)).ToArray();
https://github.com/evilguest/linq2d
V>и сколько это работать будет по времени.
Ну, некоторые вещи работают быстрее, чем на плюсах. Может быть, numpy написан получше — можем помериться, если есть желание.
V>Работа с массивами в numpy вообще впечатляет — очень элегантно. Занимаясь имадж процессингом, я понял, что плюсы не нужны почти нигде — все можно сделать на пайтоне — и не будет тормозить!
V>На шарпе это невозможно.
Вы недооцениваете шарп.