Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 21, 2018 20:48:40

Antigr
Зарегистрирован: 2018-05-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему не работает цикл?

 import numpy as np
a=np.zeros(1000)
b=list(a)
b.append(1)
c=[]
for i in range(len(b)):
    if b[i]==0:
        del b[i]
        #print(i)
    c=b
смысл - удалить все нули оставить массив
c =[1]
выдает ошибку
File “Eaero/python/circle.py”, line 7, in <module>
if b==0:
IndexError: list index out of range

Отредактировано Antigr (Июнь 21, 2018 20:50:04)

Офлайн

#2 Июнь 21, 2018 22:17:09

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Почему не работает цикл?

Antigr это потому что

 if b[i]==0:
        del b[i]
плохая идея, удалять элементы из спика “на ходу”. Удаляя элемент, список становиться короче, но i то у вас итерируеться по len(b) на момент когда список еще имел первоначальную длинну, вот в один прекрасный момент i становиться больше длинны списка и вылазит index out of range.
создайте новый масив, в котороый добавляйте нужные значения, а старый список не трогайте.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 21, 2018 22:17:31)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version