Быстрее ли использовать кортежи и заменять их обновленными кортежами по мере необходимости или использовать изменяемые списки, когда сохраненные значения часто меняются? - PullRequest
1 голос
/ 04 марта 2020

Я запускаю простые симуляции с Python, пытаясь изучить внутреннюю работу ИИ. Я создал очень простую структуру для визуального представления того, с чем я работаю (чтобы дать ANN «игровую площадку» для выживания).

class GUI: #Parent class for all displayed object classes
def __init__(self, x, y, width, height, xB, yB, image, isImage, color):
    GUIObj.append(self) 
    #Appends self to a list that is iterated through in the main loop, where each iterated element
    #has its .display() method run.

    self.coord = (x, y) #SUBJECT MATTER
    self.size = (width, height) #SUBJECT MATTER

def move(self, direction, distance=1):
        #SUBJECT MATTER
        self.coord = ( (self.coord[0] + direction[0] * distance) * SRConst[0], (self.coord[1] + direction[1] * distance) * SRConst[1])

В начале моего изучения Python, насколько я понимаю, кортежи вычисляются намного быстрее, чем списки. И, как вы можете видеть, я использую кортежи для координат моих объектов.

Однако мне сейчас интересно, являются ли кортежи хорошим выбором, когда значения этих переменных меняются довольно часто (как вы можете себе представить, меняются координаты "тела объекта"). И поэтому я просто спрашиваю: это быстрее или я должен использовать изменяемые списки?

1 Ответ

1 голос
/ 04 марта 2020

Вот время для нескольких общих сценариев ios

>>> timeit("n=(n[0]+1,n[1]+2,n[2]+3)", setup="n=(1,2,3)")
0.17996198200125946
>>> timeit("n[0]+=1;n[1]+=2;n[2]+=3", setup="n=[1,2,3]")
0.23098498799663503
>>> timeit("n=[n[0]+1,n[1]+2,n[2]+3]", setup="n=[1,2,3]")
0.19799970900203334
>>> timeit("n[0]=n[0]+1;n[1]=n[1]+2;n[2]=n[2]+3", setup="n=[1,2,3]")
0.21857999200437916

Все это в значительной степени ва sh. Если вы обнаружите, что выполняете операцию над множеством целых чисел или чисел с плавающей запятой, вы обнаружите, что pandas, который содержит данные в C структурах, - это путь к go.

...