Я думаю, что понимание списка является самым простым способом, но, если вам это не нравится, это, очевидно, не единственный способ получить то, что вы хотите - вызывать данный вызываемый объект 100 раз без аргументов для формирования 100 элементов. нового списка. Например, itertools
, очевидно, может это сделать:
>>> import itertools as it
>>> lst = list(it.starmap(Object, it.repeat((), 100)))
или, если вы действительно традиционалист, map
и apply
:
>>> lst = map(apply, 100*[Object], 100*[()])
Обратите внимание, что это по сути один и тот же (крошечный, как концептуально, так и фактически ;-) объем работы, который потребовался бы, если бы вместо необходимости вызывать без аргументов Object
требовалось вызывать с одним аргументом - или скажем, если Object
на самом деле была функцией, а не типом.
От вашего удивления, что для выполнения этой задачи может потребоваться «столько же, сколько для понимания списка», вы, кажется, думаете, что каждый язык должен в особом случае выполнять «вызовы типа без аргументов» над другими видами обращений к вызывающим лицам, но я не понимаю, что же такого важного и особенного в этом очень конкретном случае, чтобы оправдать обращение с ним иначе, чем со всеми остальными; и, как следствие, лично я очень рад, что Python не выделяет этот единственный случай для необычного и странного обращения, но обрабатывает так же регулярно и легко, как и любой другой подобный вариант использования! -)