Я думаю, что понимание списка является самым простым способом, но если вам это не нравится, это, очевидно, не единственный способ получить то, что вы хотите, - называть данный вызываемый 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 не выделяет этот один случай для странного и странного лечения, но обрабатывается так же регулярно и легко, как и любой другой подобный вариант использования! -)
+1. Я бы предложил xrange вместо диапазона. – orip
Справедливая точка; Недавно я был в Python 3. :) –
@orip В Python 3, 'range()' делает то, что 'xrange()' используется, а 'xrange()' не существует. Если вы хотите написать код, который будет работать как на Python 2, так и на Python 3, вы не сможете использовать 'xrange()'. –