В Python 2 было две разные функции для генерирования последовательности чисел:
- range() возвращал список, то есть объект класса list
- xrange() появился позже и являлся генератором, то есть ленивой функцией, возвращающей итерируемое
В Python 3 вместо двух разных функций осталась одна функция range(), которая ведёт себя как xrange().
Отличие в том, что она ленивая, то есть не создаёт сразу весь список чисел, вместо этого она создаёт каждое следующее число непосредственно перед отдачей потребителю. Это быстрее, чем создавать все числа сразу, однако у итерируемого мы не можем взять значение по индексу, как у списка. Если вам нужен именно список, оберните range() в функцию list().