Как насчет:
import copy
def create_array_mutable(dims, obj):
if len(dims) == 0:
return copy.deepcopy(obj)
else:
return [create_array_mutable(dims[1:], obj) for i in xrange(dims[0])]
class C(object): pass
print create_array_mutable((2,3,4), C())
Это создает 2x3x4
массив уникальных экземпляров C
.
Решение все еще рекурсивное, но я думаю, что рекурсия довольно хорошаяподходит для этой проблемы.