Member 11362771 Ответов: 0

Список индекс вне диапазона ошибка при переборе через 2 списков в Python


У меня есть 2 списка в моем коде.
список данных имеет значение len = 11
new_list имеет len = 23

Я должен найти строку из списка данных и проверить, существует ли она в new_list.
Я вижу,что мои target_data заполняются данными, но когда я иду, чтобы распечатать их, я получаю ошибку..


Содержание списка моих данных, как показано ниже:
RegInputOutput-ML                         Warning     /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 315  10   Port 'clka' is not registered [Hierarchy: 'block_ram_top.blk_mem_inst_0']
RegInputOutput-ML                         Warning     /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 315  10   Port 'clka' is not registered [Hierarchy: 'block_ram_top.blk_mem_inst_1']
RegInputOutput-ML                         Warning     /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 317  10   Port 'ena' is not registered [Hierarchy: 'block_ram_top.latch']
RegInputOutput-ML                         Warning     /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 317  10   Port 'ena' is not registered [Hierarchy: 'block_ram_top.ff1']
RegInputOutput-ML                         Warning     /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 319  10   Port 'wen' is not registered [Hierarchy: 'block_ram_top']


содержание нового списка
| block_ram_top | (top) | 23 | 23 | 0 | 0 | 138 | 0 | 2 | 0 | 4 |
| (block_ram_top) | (top) | 7 | 7 | 0 | 0 | 9 | 0 | 0 | 0 | 0 |
| blk_mem_inst_0 | blk_mem_gen_0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| (blk_mem_inst_0) | blk_mem_gen_0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |


Переменная, которую я извлекаю из new_list в своем коде:
inst_blk_mem_gen']
gnbram.gnativebmg.native_blk_mem_gen']
valid.cstr']
ramloop[0].ram.r']
prim_noinit.ram']
blk_mem_inst_1']
U0']
block_ram_top']
blk_mem_inst_0']
complex_multiplier_inst']

Ожидаемый список target_data:
Это должно иметь все элементы списка данных, имеющие переменную, которую я извлекаю из элементов new_list:
RegInputOutput-ML Warning /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 315 10 Port 'clka' is not registered [Hierarchy: 'block_ram_top.blk_mem_inst_0']
RegInputOutput-ML Warning /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 315 10 Port 'clka' is not registered [Hierarchy: 'block_ram_top.blk_mem_inst_1']
RegInputOutput-ML Warning /sitework/soc/users/law/yeppy2/yeppy2chewy/yeppy2chewy_4ports/yeppy2/Spy_test_prj/mem/project_1/project_1.srcs/sources_1/ip/blk_mem_gen_0/synth/blk_mem_gen_0.vhd 319 10 Port 'wen' is not registered [Hierarchy: 'block_ram_top']


Пожалуйста, помогите мне избавиться от этой ошибки..Я новичок в python, поэтому нахожу его трудным.

Что я уже пробовал:

Мой код:
print len(new_list)
print len(data)
      
for i in range(len(new_list)):
    parts = (new_list[i].split('|'))
    #print parts
    if (int(parts[8]) >= 1 or int(parts[9])  >= 1 or int(parts[11])  >= 1 ):
        variable = parts[1]
        variable = variable.strip()
        variable = variable + "']"
        #print variable
        for d in data:
            if variable in d:
                target_data.append(d) 
                print "ok"
            else:
                NODATA = 1
    else:
        NODATA = 1
print target_data


Ошибка из командной строки:
23
11
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
list index out of range

Richard Deeming

По-видимому, одна из струн в new_list не содержит по крайней мере 12 столбцов, разделенных символом | персонажи, так что один из ваших parts[...] доступ терпит неудачу.

Попробуй поставить print len(parts) внутри цикла, где вы в данный момент получили закомментированное сообщение print parts линия.

Richard MacCutchan

Пожалуйста, покажите все данные, которые вы пытаетесь обработать.

Member 11362771

Я добавил данные списков, которые я использую в самом своем вопросе

Richard MacCutchan

В начале вашей программы вы печатаете длину new_list, которая равна 23. Это не соответствует данным, которые вы показали.

Member 11362771

@Ричард Диминг...Вы абсолютно правы...Один из элементов в new_list имел меньшую длину..следовательно, он не мог передать оператор if...Спасибо за ваше наблюдение..

Member 11362771

@Ричард Диминг...Есть ли какой-нибудь способ упростить цикл для заполнения списка target_data? Я должен забрать детали[1] из new_list и проверить, есть ли они в списке данных..(но в конце строки)

0 Ответов