Я начал работать над некоторыми проблемами проекта Эйлера и решившими number 4 с простым грубой силой раствором:трансформирующих вложенные Python петли в списковый
def mprods(a,b):
c = range(a,b)
f = []
for d in c:
for e in c:
f.append(d*e)
return f
max([z for z in mprods(100,1000) if str(z)==(''.join([str(z)[-i] for i in range(1,len(str(z))+1)]))])
После решения, я попытался сделать его максимально компактно возможно, и придумал эту ужасную нижнюю линию!
Чтобы не оставить что-то наполовину, я пытаюсь сконденсировать функцию mprods
в понимании списка. До сих пор, я придумал эти попытки:
[d*e for d,e in (range(a,b), range(a,b))]
Очевидно полностью на ложном пути. :-)[d*e for x in [e for e in range(1,5)] for d in range(1,5)]
Это дает мне[4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16, 4, 8, 12, 16]
, где я ожидал[1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]
или аналогичный.
Любые Pythonistas, которые могут помочь? :)
Выполнение максимально компактных операций - довольно глупая цель. –
Глупый, но развлекательный! :) –