3 ms·
xrange vs range is basic competence for any Python 2 programmer. They are two of the most commonly used functions and have very distinct uses. I think that was
by srssays 10y ago
xrange vs range is basic competence for any Python 2 programmer. They are two of the most commonly used functions and have very distinct uses. I think that was the point of the original post, however, that the question is so basic it is actually insulting - like interviewing a doctor and asking the difference between red and white blood cells.
- drvdevd 10y agoI don't know this. And I don't care. I don't self-identify as anything near a "Python programmer" and yet I've written, modified, read, and debugged (and put into production at times), let's say 100's of thousands of lines of Python since the late 90s. Not a ton, perhaps, but I certainly feel qualified to write it. I'm forced to maintain (or deploy) other people's Python code all the time. Personally, I would rarely choose it for a team project I have to maintain (if the choice is mine) because I've seen most teams commit the same annoying type errors over and over in every dynamic language I've ever used, including epecially Python. I've worked with much more competent Python programmers than myself who still do this. But if I was on your team, I wouldn't complain and my code would be somewhere between pretty good to great. I would help the team ship that Python and ship it well. I'm not sure what this rant says more about: me or this 'range vs xrange' question?
- srssays 10y agoThe problem is that it's bad style to write (in Python 2.x): for i in range(n): # your code here because it potentially allocates a lot of memory for no reason whatsoever. It's the equivalent of this C code: int* r = calloc(sizeof(int), n); for (int j = 0; j < n; j++) r[j] = j; for (int j = 0; j < n; j++) { int i = r[j]; // your code here } free(r); If you don't want to deal with the distinction then what you can do is just treat range() as deprecated and always use either xrange() or list(xrange()) depending on the situation. But you had probably ought to know about the issue.
- drvdevd 10y agoOk, I would certainly agree then that I ought to know about that (for Python 2.x). And here's the thing: despite my rant, given that explanation, I'm going to have to say I respect that as a Python (2.x) interview question. But that's because I care about performance optimization and good style in every language I use. I'm not sure that everyone else always should or that this should be a deal breaker for a python dev gig.