Самый быстрый способ создания производного UserList экземпляров классов в Python - PullRequest
1 голос
/ 08 апреля 2020

У меня есть класс, который наследует от UserList. Когда я создаю экземпляр этого класса, я передаю ему целое число, и список заполняется самим номером другого экземпляра класса. Например:

from collections import UserList

class foo(object):
    def __init__(self):
        x = 1

class bar(UserList):
    def __init__(self, num):
        super().__init__(self)
        for i in range(num):
            self.append(foo())

Все это прекрасно работает, однако для больших значений num это очень дорого. Я видел сообщения об этом, такие как Лучший и / или самый быстрый способ создания списков в python, однако я не могу получить список, который бы мог использовать какой-либо из этих параметров для себя.

Спасибо за взглянув!

1 Ответ

0 голосов
/ 08 апреля 2020

Создание временного списка и передача его в super () init () UserList на много порядков быстрее для больших num


from collections import UserList

class foo(object):
    def __init__(self):
        x = 1

class bar(UserList):
    def __init__(self, num):
        temp = [foo() for _ in range(num)]
        super().__init__(temp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...