Question

I know python 2to3 changes all xrange to range and I don't see any problem with this. My question is about how it changes range(...) into list(range(...)): is it dumb and just blindly search and replaces them all, or is it smart enough to tell when the list isn't needed and leaving it as range would be better?

Était-ce utile?

La solution

I don't know how intelligent it really is, but it certainly doesn't add list() to every range().

For example, the following:

print(range(10))

is changed to:

print(list(range(10)))

However, the following:

for el in range(10):
  print(el)

is left untouched.

This clearly indicates that it's more sophisticated than a blind search-and-replace.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top