имя xrange не определено

#python-3.x #jupyter-notebook

Вопрос:

я запустил приведенный ниже код в записной книжке jupyter, и он выдал следующее сообщение об ошибке: диапазон имени «xrange» не определен. я не знаю, что я делаю не так, и у меня установлен [python-3.9]. Кто-нибудь может помочь, пожалуйста?

 from pyspark import SparkContext
import random

n = 100

heads = (sc.parallelize(xrange(n))
    .map(lambda _: random.random())
    .filter(lambda r: r < 0.5)
    .count())

tails = n - heads
ratio = 1. *heads / n

print('heads =',heads)
print('tails =',tails)
print('ratio =',ratio)
 

Комментарии:

1. Похоже, вы установили пакет Python 2 в своей среде Python 3. Избавиться от него и установить версию Python 3?

Ответ №1:

xrange это функция Python 2. Имя функции изменилось на range в Python 3.

range Для получения дополнительной информации ознакомьтесь с документацией функции.

На Python 2 range возвращен полный список:

 range(5)
 

[0, 1, 2, 3, 4]

И xrange вернул повторяющийся объект.

В Python 3 range возвращает повторяющийся объект:

 x = range(5)
print(x)  # range(0, 5)
print(next(x))  # 0
print(next(x))  # 1