0
Should I create a variable inside a loop?
In the following code I have a list and two loops. In loop 1 I create a variable inside the loop to save time complexity In loop 2 I don't use a variable. The question is makes it sense to do that like loop 1 or should I use loop 2? https://code.sololearn.com/c2h1gljj5RUc/?ref=app
8 Answers
+ 5
I doubt that there is a significant time difference unless you use the variable a lot, say several thousand times. So I would base the decision on readability and coding efficency. Personally I think using a variable is more readable and is easier/faster to type, but you may have other preferences.
+ 5
Why not just use
for item in list_:
...
+ 4
Simon Sauter In any programming language a variable should NOT be created inside a loop. Consider this script in C++ :
int _ac = 0;
for (int i=0; i<2;i++){
_ac Ă·=1;
}
This is the correct technique. First the variable is initialized, then
Incremented. This way only one address on the call stack is utilized. Else allocation and initialization will be iterative, and hence, redundant.
One more caveat, in the latter case, static variables will have to be used.
because instance variiables get initialized at each iteration, as mentioned earlier.
+ 4
Sanjay Kamath that's a good point. Although I'm not sure it applies to Python.
https://david.goodger.org/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables
+ 3
Simon Sauter AFAIK programming languages would be designed to work similarly. Have you heard of shadow loops? ie using the same variable in nested loops (same name). This fails everywhere at run-time, even though most programming environments do not identify them as such. eg)C++
+ 1
How are you saving time complexity in the first loop? Would you not also be using additional memory for the variable creation? /genuine-question
But I will say that either works depending on what your overall program needs. There is also the fact that defining the variable just outside the loops works better than your two examples! :)
+ 1
Justice i thought if I write
list_[i] the program search for i in the list so if I do that only once per loop I save time. That was the idea. đ
I know to create a variable cost also time and memory.
Define the variable outside the loop would be change the result. Because i changes the value.
Simon Sauter i know this kind of loop thanks but in the real code I need i. This was just an example.
0
list_[i] has a time complexity of O(1).
If I write
var_a = list_[0] # the value is 1
the value 1 becomes a additional label var_a
so I now have access to the value 1 with two labels var_a and list_[0]
So if I would write
item = None
for.... :
item = list_[i]
i create a label for None an then I change the label to the current list item.
im didn't know how the labels/names itself will be handled in pythonđ€