Python 如何关联两个列表?

Python 如何关联两个列表?,python,python-3.x,list,python-2.7,Python,Python 3.x,List,Python 2.7,我有两个列表和一些参数。在这些输入的帮助下,我正在给电池充电和放电。在第一个列表中,有0和1。0表示为电池放电,1表示为电池充电。在第二个列表中,有一些值,在它们的帮助下,我们可以给电池充电电池参数为: Max_capacity = 600MW initial_capacity = 0MW Duration = 4hours battery size = 150MW 这两个列表中实际上都有8760个值,但我只显示了很少的值 signal = [1,1,1,1,0,0,0,0,0,1,1,1,0

我有两个列表和一些参数。在这些输入的帮助下,我正在给电池充电和放电。在第一个列表中,有0和1。0表示为电池放电,1表示为电池充电。在第二个列表中,有一些值,在它们的帮助下,我们可以给电池充电电池参数为:

Max_capacity = 600MW
initial_capacity = 0MW
Duration = 4hours
battery size = 150MW
这两个列表中实际上都有8760个值,但我只显示了很少的值

signal = [1,1,1,1,0,0,0,0,0,1,1,1,0,0]
excess_energy = [0,100,90,160,20,0,0,0,0,0,50,60,70,0]
因此,这里的条件很少:

  • 只有当信号为1且过剩能量大于0时,电池才能充电
  • 如果多余的_能量大于150MW,则电池将仅以150MW进行充电,如果电量小于150MW,则可以以多余能量中的任何值进行充电
  • 只有在信号为0且固定时间为150MW时,蓄电池才能放电
  • 电池不能在0以下放电,也不能在600MW以上充电 预期产出:

  • 我的做法:

    battery_size = 150
    duration = 4
    initial_capacity = 0
    max_capacity = 600
    ans_charged = []
    ans_discharged = []
    discharge = 0
    days_counter = 0
    signal = [0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1]  # Reversed the polarity
    excess_energy = [0, 100, 90, 160, 20, 0, 0, 0, 0, 0, 50, 60, 70, 0]
    for decider, ex_energy in zip(signal, excess_energy):
        days_counter += 1  # days counter because every new day all the counters are reset
        if decider == 1 and discharge < duration and max_capacity >= initial_capacity >=0:  # at 0 we charging and at 1 we are discharging
            initial_capacity -= battery_size
            if initial_capacity >= 0:
                ans_charged.append(initial_capacity)
                ans_discharged.append(0)
                discharge += 1
            else:
                ans_charged.append(0)
                ans_discharged.append(0)
                discharge += 1
        elif decider == 1:
            ans_charged.append(0)
            ans_discharged.append(0)
        elif decider == 0 and ex_energy > 0:
            if ex_energy < 150 and max_capacity >= initial_capacity >= 0:
                initial_capacity += ex_energy
                if initial_capacity <= max_capacity:
                    ans_discharged.append(initial_capacity)
                    ans_charged.append(0)
                else:
                    ans_discharged.append(max_capacity)
                    ans_charged.append(0)
            else:
                initial_capacity += 150
            if initial_capacity <= max_capacity:
                ans_discharged.append(initial_capacity)
                ans_charged.append(0)
            else:
                ans_discharged.append(max_capacity)
                ans_charged.append(0)
        elif decider == 0:
            ans_discharged.append(0)
            ans_charged.append(0)
            discharge = 0
        if days_counter == 24:
            days_counter = 0
            charge = 0
            discharge = 0
        print(ans_discharged)
        print(ans_charged)
    

    我知道这是个大问题,但有人能帮我回答吗,因为正如你所看到的,我得到的是40和100,而不是50和110,你的代码非常复杂,可以简化:

    signal = [1,1,1,1,0,0,0,0,0,1,1,1,0,0]
    excess_energy = [0,100,90,160,20,0,0,0,0,0,50,60,70,0]
    charge = []
    discharge = []
    
    current = 0
    for i, value in enumerate(signal):
        if value == 0 : # Discharging
            current = max(current - 150, 0)
            discharge.append(current)
            charge.append(0)
        else:
            current = current + min(excess_energy[i], 150)
            charge.append(current)
            discharge.append(0)
    
    print(charge)
    print(discharge)
    

    在倒数第二条生产线不应该有另一条排放吗?在哪里?当我设置天数计数器==24?不,我的意思是在表中,从110(+60)到0.oh,在最后一个位置,放电变为零,因为每次放电发生时,我从初始容量中减去150。所以110-150会变成-40,但我会把0加上,因为电池的容量永远不会是负的。这并不是预期的答案。请查看我的预期答案。[0,100,190,340,0,0,0,0,0,50,110,0,0][0,0,0,0,190,40,0,0,0,0,0,0,0]它与您的表格匹配是的,对不起,我复制了一些错误内容以供验证。但这两种情况如何:1)电池放电只能发生4次,2)我的代码中有天数计数器,它基本上计算天数,并在每新的一天将每个计数器设置为==0。我不确定我是否明白你的意思。电池一天能放电4次吗?如果是,日期和时间信息在哪里?此外,重置计数器也没有帮助,因为24小时内放电4次不需要在午夜重置。在24小时的任何窗口内,它可以放电4次。是的,是的,我自己在代码中添加了我的进一步要求。谢谢
    signal = [1,1,1,1,0,0,0,0,0,1,1,1,0,0]
    excess_energy = [0,100,90,160,20,0,0,0,0,0,50,60,70,0]
    charge = []
    discharge = []
    
    current = 0
    for i, value in enumerate(signal):
        if value == 0 : # Discharging
            current = max(current - 150, 0)
            discharge.append(current)
            charge.append(0)
        else:
            current = current + min(excess_energy[i], 150)
            charge.append(current)
            discharge.append(0)
    
    print(charge)
    print(discharge)