import gc class MockFrame(): def grid(self, row, column, sticky): pass mock_frame = MockFrame() def Button(frame, text=None, fg=None, width=None, command=None, column=None, sticky=None): return mock_frame class Mock(): pass self = Mock() self.buttonRed, self.buttonBlue, self.buttonGreen, self.buttonBlack, self.buttonOpen = (None, )*5 f4 = Mock() f4.columnconfigure = lambda c, weight: None ALL = Mock() button = ["Red", "Blue", "Green", "Black", "Open"] color = ["red", "blue", "green", "black", "black"] commands = [self.buttonRed, self.buttonBlue, self.buttonGreen, self.buttonBlack, self.buttonOpen] g = gc.collect() %%timeit # Benchmark 1, the original code for c in range(5): f4.columnconfigure(c, weight=1) Button(f4, text=button[c], fg=color[c], width=5, command=commands[c]).grid(row=0, column=c, sticky=ALL) g = gc.collect() %%timeit for c, (btn, col, cmd) in enumerate(zip(button, color, commands)): f4.columnconfigure(c, weight=1) Button(f4, text=btn, fg=col, width=5, command=cmd). \ grid(row=0, column=c, sticky=ALL) pass g = gc.collect() %%timeit c = 0 for (btn, col, cmd) in zip(button, color, commands): f4.columnconfigure(c, weight=1) Button(f4, text=btn, fg=col, width=5, command=cmd). \ grid(row=0, column=c, sticky=ALL) c += 1 pass g = gc.collect() %%timeit for c, (btn, col, cmd) in enumerate(zip(button, color, commands)): pass g = gc.collect() %%timeit c = 0 for btn, col, cmd in zip(button, color, commands): pass c += 1