Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2024 02:05:06

vickodin
Зарегистрирован: 2024-01-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

List out of range. Нужна помощь

Привет!

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

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

 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 * first_col
~~~~~~~~~~~~~~~~~~~~~^^^^
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']]}


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

Офлайн

#2 Янв. 14, 2024 11:53:58

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2586
Репутация: +  60  -
Профиль   Отправить e-mail  

List out of range. Нужна помощь

Ну ты входишь за памки длины сформированного тобой массива

 ic| first_col: {'num': [[1, '25.01.2004', 1, -1, 1, -1, -1, 'g'],
                        [2, '01.02.2004', -1, 1, -1, 1, 1, 'g'],
                        [3, '08.02.2004', 1, -1, 1, 1, -1, 'b'],
                        [4, '15.02.2004', -1, 1, 1, -1, -1, 'g']]}
ic| f"{p}:{ts} * {p - 1}: {ts}": '1:6 * 0: 6'
ic| f"{p}:{ts} * {p - 1}: {ts}": '2:6 * 1: 6'
ic| f"{p}:{ts} * {p - 1}: {ts}": '3:6 * 2: 6'
ic| f"{p}:{ts} * {p - 1}: {ts}": '1:8 * 0: 8'
ic| f"{p}:{ts} * {p - 1}: {ts}": '2:8 * 1: 8'
ic| f"{p}:{ts} * {p - 1}: {ts}": '3:8 * 2: 8'
У тебя длина массива 8 - но обращение к членам идет с нуля то есть 8 = 0..7
Отсюда и ошибка что ты пытаешься получить значение по индексу большему чем длина массива

Дальше жевать или попробуешь сам?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version