Python 如何关联两个列表?
我有两个列表和一些参数。在这些输入的帮助下,我正在给电池充电和放电。在第一个列表中,有0和1。0表示为电池放电,1表示为电池充电。在第二个列表中,有一些值,在它们的帮助下,我们可以给电池充电电池参数为: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
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]
因此,这里的条件很少:
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)