Обновление списка в цикле с помощью функции - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь написать простой цикл на Python. Вот код:

N = 1000

xrange = np.arange(-1.0,0.0,1.0/N)
drange = 1.0 + xrange
yrange = np.zeros(N)

range = np.arange(0,N,1)

for i in range:
    if drange[i] == 1.0:
        yrange[i] == 1.0
    else:
        yrange[i] == np.log(drange[i])/(drange[i] - 1.0)

print(yrange)

Однако после запуска цикла for список yrange не обновляется. Все значения по-прежнему равны нулю.

Что-то не так с else: частью цикла?

1 Ответ

0 голосов
/ 12 сентября 2018

Ваша первая ошибка использует == вместо = для назначения, как упомянуто @abarnert в комментариях.Ваша вторая ошибка - использование цикла вместо векторизованных операций NumPy.Ваш код в идеале должен выглядеть следующим образом:

N = 1000

drange = np.arange(-1.0, 0.0, 1.0 / N)
yrange = np.where(drange == 0.0, 1.0, np.log(drange + 1) / drange)

print(yrange)

Наконец, условие drange == 0.0 никогда не выполняется из-за ошибок округления, но, надеюсь, это не важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...