Вопрос

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?

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top