On 6 Nov, 17:54, "Alf P. Steinbach" <al...@start.no> wrote:
> But wow. That's pretty hare-brained: dynamic allocation for every stored value > outside the cache range, needless extra indirection for every operation. First, integers are not used the same way in Python as they are in C+ +. E.g. you typically don't iterate over them in a for loop, but rather iterate on the container itself. Second, if you need an array of integers or floats, that is usually not done with a list: you would use numpy.ndarray or array.array, and values are stored compactly. A Python list is a list, it is not an array. If you were to put integers in dynamic data structures in other languages (Java, C++), you would use dynamic allocation as well. Yes a list is implemented as an array of pointers, amortized to O(1) for appends, but that is an implementation detail. Python is not the only language that works like this. There are also MATLAB and Lisp. I know you have a strong background in C++, but when you are using Python you must unlearn that way of thinking. Finally: if none of these helps, we can always resort to Cython. In 99% of cases where integers are bottlenecks in Python, it is indicative of bad style. We very often see this from people coming form C++ and Java background, and subsequent claims that "Python is slow". Python is not an untyped Java. If you use it as such, it will hurt. Languages like Python, Perl, Common Lisp, and MATLAB require a different mindset from the programmer. -- http://mail.python.org/mailman/listinfo/python-list