(python)为什么.append()在这里不起作用?

时间:2019-10-29 17:18:19

标签: python-3.x algorithm

我有一些代码可以有效替代此excel电子表格,在该电子表格中我试图查找两次之间的差异。根据该值第二列的状态,我想将其分为两列。

excel spreadsheet

我将前两列中的数据转换为

形式的列表列表
[...[2.96738, 0], [3.91727, 1], [3.9729, 0], [4.88419, 1], [4.93686, 0], [5.86113, 1], [5.91125, 0]...]

运行我的代码:

    def Delta_Time_One_State(CleanState):
        for counter, value in enumerate(CleanState[1:]):
            DeltaT = value[0] - CleanState[counter][0]
            Lgt_cut_Time = []
            Lgt_Uncut_Time = []
            if value[1] == 0:
                Lgt_cut_Time.append([value[0] + DeltaT / 2, DeltaT])
            else:
                Lgt_Uncut_Time.append([value[0] + DeltaT / 2, DeltaT])


    clean_state_A = [[0.0, 0], [0.03253, 1], [0.08479, 0], [0.98748, 1], [1.03717, 0], ... [483.8888, 0], [484.6563, 1]]
    Delta_Time_One_State(clean_state_A)

给我

Lgt_Uncut_Time = [[485.04004999999995, 0.7674999999999841]]
Lgt_cut_Time = []

这是不对的,因为for循环贯穿了几乎所有clean_state_A。由于每个循环都通过if语句,.append函数似乎出了点问题,但我不知道是什么。

2 个答案:

答案 0 :(得分:3)

每个循环都在重新定义两个列表。将它们移至for循环之外,以便每次迭代都将其追加到同一列表中。

T

答案 1 :(得分:1)

您正在重新创建Lgt_cut_TimeLgt_Uncut_Time列出每个循环。

def Delta_Time_One_State(CleanState):
    for counter, value in enumerate(CleanState[1:]):
        DeltaT = value[0] - CleanState[counter][0]
        Lgt_cut_Time = []
        Lgt_Uncut_Time = []
        if value[1] == 0:
            Lgt_cut_Time.append([value[0] + DeltaT / 2, DeltaT])
        else:
            Lgt_Uncut_Time.append([value[0] + DeltaT / 2, DeltaT])

只需将它们移出循环,以便它们累积结果,而不是在每个循环中都替换它们。

def Delta_Time_One_State(CleanState):
    Lgt_cut_Time = []
    Lgt_Uncut_Time = []
    for counter, value in enumerate(CleanState[1:]):
        DeltaT = value[0] - CleanState[counter][0]
        if value[1] == 0:
            Lgt_cut_Time.append([value[0] + DeltaT / 2, DeltaT])
        else:
            Lgt_Uncut_Time.append([value[0] + DeltaT / 2, DeltaT])