在Python中开发更高效的数组和循环脚本

时间:2015-06-29 20:32:21

标签: python list parsing dictionary

我正在使用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

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

希望这有帮助!