Список индекс вне диапазона ошибка при переборе через 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 и проверить, есть ли они в списке данных..(но в конце строки)