I want to say
a[current] = value
rather than saying
a.append(value)
because I want to show that the current value is value. The former listing shows this better. I come from C, so I am a bit confused with python lists. In C I preallocate space, so a[current] would exist and contain junk before I assign it value. Can I do something similar in Python?
When I first started using Python I ran into this problem all the time. You can do things like ‘[0]*10’, but is inelegant, and will cause you problems if you try to do the same thing for lists of lists.
I finally solved the problem by realizing most of the time I just needed to reformulate the problem into something more pythonic. List comprehensions (as noted above) will almost always be the correct answer. If you are preallocating space, that means you are probably going to iterate over some other list, do some operation, then set an element in the new list to that value:
You can get fancier. If for example, you don’t want all the elements, you can set up a filter:
which will only put items that are less than 5 into the newList.
However, sometimes list comprehension isn’t want you want. For example, if you’re doing math-oriented coding, then numpy can come to the rescue:
will create an array with 10 elements.