>> Дал базы отдельно - работает. Не дал - работает с базой по умолчанию.
> Отлично. То есть получается этот твой мап принимает третьим аргументом доп. аргументы
> для приведения в число. Логично, че. Третьим? Там их можно передавать столько, сколько влезет. Прикольно, да?
map(...)
map(function, sequence[, sequence, ...]) -> list
> К черту единую ответственность, давайте
> внедрим в map еще и функционал по байндингу аргументов и по
> тому, как и в каком порядке их применять. Как это убого
> и узкоспецифично...
Рукалицо.жпг
Как все запущено.
Убого, это не знать ничего кроме ЖопоСкрипта, но мнение иметь. Ценное.
Оттуда и какие-то странные фантазии насчет мапа.
>>> def mymap(f, *args):... return [f(*myargs) for myargs in zip(*args)]
...
>>> mymap(int, ['10','12','1338'])
[10, 12, 1338]
>>> mymap(int, ['10','12','1338'],[2,3,16])
[2, 5, 4920]
Вот и вся магия. Наивный зип пишется тоже в десяток строк, если что.
Это при том, что к питону я уже лет шесть не притрагивался.
> Напиши мне при помощи своего супирмощного map следующие конструкции:
Долго думали, конструируя cферического коня и подбирая примеры cпециально под ЖС?
Кстати, неплохо было бы вначале самому предъявить код, прежде чем кидать предъявы. Это так, на будущее. Да и на супермощность мапа никто не претендовал, это вы с какого-то перепугу придумали. Логичность, универсальность, простота - вот основные кирпичики.
А теперь замените любимое кресло на то, которое не жалко, присядте, пристегнитесь или прибейте к потолку подушку, дышите глубоко:
> 1) Применить основы в обратном порядке. Не порождая новый отреверсенный список, потому
> как а вдруг их мульён? И не мутируя оригинальный.
>>> map(int,['10','11','12','10'], reversed([2,10,16,32]))
[32, 17, 12, 2]
Круто, правда?
> 2) Применять ко всем строкам основу = 16. Не пользоваться лямбдами, потому
> что твой мап же супирмощный? Он же позволяет супирмощно внедрять аргументы?
А в ластах по фонарному столбу мне при этом не надо карабкаться? Нет? Ой спасибочки!
Тогда выбирайте, на вкус и цвет, без лямбд.
>>> map(partial(int,base=16),['10','11','12','10'])[16, 17, 18, 16]
>>> imap(int,['10','11','12','13'], repeat(16))
'<itertools.imap object at 0x1338a0337>'
# а это вообще итератор, который позволяет обрабатывать последовательно нужные элементы,
# вместо героического втискивания нашего гипотетического мильенного списка в память
>>> list(imap(int,['10','11','12','13'], repeat(16)))
[16, 17, 18, 19]
>>> list(imap(int,['10','11','12','13'], cycle((16,))))
[16, 17, 18, 19]
> 3) Основ пусть будет всего два: 16 и 32, но чтобы по
> окончанию списка основ он начинал сначала (а не совал None) --
> '10' как 16, '11' как 32, '12' как 16, '13' как
> 32. Не порождая новый список основ, потому как а вдруг чисел
> будет мульён?
> '10' как 16, '11' как 32, '12' как 16, '13' как 32
'11' как 32 и '13' как 32? Уличная магия? Именно так увы, нельзя :(
>>> imap(int,['10','11','12','13'], cycle((16,32)))
>>> list(imap(int,['10','11','12','13'], cycle((16,32))))[16, 33, 18, 35]
> 4) Применить ко всем строкам основу = 16, потом к каждому числу
> прибавить его индекс: ['10','11','12','13'].map((s, i) => parseInt(s, 16) + i). Это
> пример на JS-ном мапе.
Долго думали над сферическим примером, подходящим именно под черезжо^W жс-но альтернативный parseInt? А зря.
>>> map(lambda (i,x): int(x, base=16) + i, enumerate(['10','11','12','13']))[16, 18, 20, 22]
Все? Кстати, как оно там, в луже?
> А ты напиши на супирмощном питоновском.
> супирмощном питоновском.
> что твой мап же супирмощный?
> супирмощном
В этом вся суть ЖСников, VBшников и прочих умников. Вместо конструирования из простых, понятных и универсальных кирпичиков любят всякие разные "сделай_все_за*бись_cуперпупирsubfunproc".