根据第二个列表的值分割列表

时间:2020-05-27 10:02:38

标签: python-3.x

我正在尝试建立一个循环,将循环读取功率读数列表,并根据当晚记录的最低温度将其分为两个单独的列表(检查空调的使用情况)。但是我似乎无法对列表进行排序。


Pwr_Usd = [0, 9, 13, 11, 13, 8.5, 12.5, 14, 10, 8.5, 7.5, 21, 7, 8, 12, 17, 6, 12, 11.25, 12.75, 8]
Temp_Min = [13.8, 14.1, 13.7, 16.9]
Ovr_Usd = PwrUsd[1::4]  # Overnight Usage netween 12am and 6am

## Air Conditioning
AirCon = []

## Standby Power
StbyPwr = []


for i in Ovr_Usd:
    if i > 16 in Temp_Min:
        AirCon.append(i)

else:
    StbyPwr.append(i)

print(AirCon)
print(StbyPwr)

在一个完美的世界中,我最终会得到两个列表

Aircon = [12]
stbyPwr = [9, 8.5, 8.5, 8]

但我愿意接受任何建议,让我根据功率列表运行温度列表,并在夜晚天气太冷而无法使用空调电源的情况下进行排序。值得注意的是,所有列表都随时间顺序组织。 Temp_min超过一周,每个Pwr_Usd读数相距6小时,因此Ovr_Usd为什么只选择第4个值进行比较。

1 个答案:

答案 0 :(得分:0)

要在python中对列表进行排序,请尝试使用python的.sort列表方法:

pwr_usd = [0, 9, 13, 11, 13, 8.5, 12.5, 14, 10, 8.5, 7.5, 21, 7, 8, 12, 17, 6, 12, 11.25, 12.75, 8]
temp_min = [13.8, 14.1, 13.7, 16.9]

pwr_usd.sort()
temp_min.sort()

print(pwr_usd)
print(temp_min)

,输出将是:

[0, 6, 7, 7.5, 8, 8, 8.5, 8.5, 9, 10, 11, 11.25, 12, 12, 12.5, 12.75, 13, 13, 14, 17, 21]
[13.7, 13.8, 14.1, 16.9]

,然后使用列表理解或良好的for循环进行所需的分隔和分类。如果是列表理解:

air_con = [i for i in pwr_usd if i > 16 and i in temp_min]

尽管这在我运行它时会返回一个空列表,这是因为pwr_usd中的值实际上都不在temp_min中(它们必须完全相同)

旁注:在命名变量时保持惯例是一种好习惯。例如使用PwrUsd

代替pwr_usd