List out of range в списке. Уже мозг сломал.

vickodin

Новичок
Пользователь
Янв 14, 2024
1
0
1
Привет!

Ломаю голову, который час. Не могу понять, где ступор. Просьба помочь со списком.

Делаю итерацию по списку и добавляю в этот список значения. Соответственно каждый раз в цикле список обновляется, но на каком то этапе выдаёт ошибку, что якобы индекса в списке нет, хотя по логике кода должно работать....

Python:
import pprint



first_col = {
  "num": [
    [1, "25.01.2004", 1, -1, 1, -1],
    [2, "01.02.2004", -1, 1, -1, 1],
    [3, "08.02.2004", 1, -1, 1, 1],
    [4, "15.02.2004", -1, 1, 1, -1]
  ]
}





print(first_col)


for i in first_col["num"]:
    print(i)
    first_st = i[2] * i[3] * i[4]
    i.append(first_st)
    if first_st == i[5]:
        i.append("g")
    elif first_st != i[5]:
        i.append("b")
    
    #print(i)
print(first_col)




#-----------------------
for ts in range(6,10,2):
    
    for p in range(1,4):
        print(ts)
        
        f = first_col["num"][p][ts] * first_col["num"][p-1][ts]
        pprint.pprint(first_col)
        first_col["num"][p].append(f)
        if f == first_col["num"][p][5]:
            first_col["num"][p].append("g")
        elif f != first_col["num"][p][5]:
            first_col["num"][p].append("b")



pprint.pprint(first_col)



****************

выдает ошибку:


Код:
Traceback (most recent call last):
   line 37, in <module>
    f = first_col["num"][p][ts] * first_col["num"][p-1][ts]
                           ~~~~~~~~~~~~~~~~~~~~~^^^^
IndexError: list index out of range


****************


при итерации индексы по логике добавляются новые, но почему ошибку выдаёт, уже мозг сломал....

Должен вывести:

Код:
{'num': [[1, '25.01.2004', 1, -1, 1, -1, -1, 'g'],
         [2, '01.02.2004', -1, 1, -1, 1, 1, 'g', -1, 'b'],
         [3, '08.02.2004', 1, -1, 1, 1, -1, 'b', -1, 'b', 1, 'g'],
         [4, '15.02.2004', -1, 1, 1, -1, -1, 'g', 1, 'b', -1, 'g', -1. 'g']]}


Заранее спасибо!
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
используйте дебагер, думаю поймете
 

Форум IT Специалистов