我正在使用python迭代一些数组,然后在每个数组数据点从数组写入excel后填充行中的单元格。
目前,我的脚本运行正常,但它看起来很糟糕,我想知道一种更有效的方法来编写代码。我应该将所有列表放入有序字典吗?我主要是想摆脱疯狂的for循环。
delay_time_data = []
step_size_data = [1,1,1,1,1]
first_uncorrectable_data = []
second_uncorrectable_data = []
erasure_decode_data = []
ecc_hibit_data = []
bits_corrected_data = []
bits_read_data = []
avg_rber_data = []
avg_rber_ed_data = []
ed_success_data = []
#Fill in the logged data from the test ouput under each delay_time column
for each_item in step_size_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in first_uncorrectable_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in second_uncorrectable_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in erasure_decode_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in ecc_hibit_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in bits_corrected_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in bits_read_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in avg_rber_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
current_letter = 1
column_iterator +=1
for each_item in avg_rber_ed_data:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter+=1
答案 0 :(得分:0)
正如我在评论中所说,“制作一个列表的字典,用for循环遍历它然后嵌套你当前使用的for循环。”
data = {
'delay_time': [],
'step_size': [1,1,1,1,1],
'first_uncorrectable': [],
'second_uncorrectable': [],
'erasure_decode': [],
'ecc_hibit': [],
'bits_corrected': [],
'bits_read': [],
'avg_rber': [],
'avg_rber_ed': [],
'ed_success': []
}
for data_set in data:
for each_item in data[data_set]:
current_cell_iteration = '%s%d'%(xlsx_cols[current_letter], column_iterator) #STARTING AT CURRENT CELL OF
overall_stats_sheet[current_cell_iteration] = each_item
current_letter += 1
current_letter = 1
column_iterator += 1
希望这有帮助!