将包含多种数据类型的列表读入“if else”语句

时间:2017-11-27 05:43:33

标签: python list if-statement types iteration

我目前正在使用此功能(下方):

def ThermoControl(datas):

    Accepted_Price = 13

    for data in datas:
        if Price > Accepted_Price:
            ac_on = False    #Heater Off
        elif weather == "cloudy":
            ac_on = False
        else:
            ac_on = True #Heater On
    return ac_on

我希望函数迭代一个包含两种数据类型(整数和字符串)的列表,如下所示:

data = [[10, "cloudy"], [12, "sunny"], [9, "sunny"]]

括号中的位置与[价格,天气]相关

有没有办法让函数通过检查对中的每个值然后继续查看列表中的下一个索引来遍历列表(“data”)?

如果该函数与上述列表一起使用,我希望这个输出:

[False, True, True]

3 个答案:

答案 0 :(得分:1)

使ac_on列表并附加每个数据点的值。通过索引访问元组的属性:

ac_on = []
for data in datas:
    if data[0] > Accepted_Price or data[1] == "cloudy":
        ac_on.append(False)
    else:
        ac_on.append(True)
return ac_on

或者作为一种较短的理解:

return [data[0] <= Accepted_Price and data[1] != "cloudy" for data in datas]

答案 1 :(得分:0)

我用print来显示输出是如何生成的。 我想你只是在尝试这个:

In [5]: data = [[10, "cloudy"], [12, "sunny"], [9, "sunny"]]
In [6]: def ThermoControl(datas):
   ...: 
   ...:     Accepted_Price = 13
   ...: 
   ...:     for Price, weather in data:
   ...:         if Price > Accepted_Price:
   ...:             ac_on = False    #Heater Off
   ...:         elif weather == "cloudy":
   ...:             ac_on = False
   ...:         else:
   ...:             ac_on = True #Heater On
   ...:         print(ac_on)
   ...: 

In [7]: ThermoControl(data)
False
True
True

答案 2 :(得分:0)

列表理解实施 -

def ThermoControl(datas):
    Accepted_Price = 13
    return [ not (a[0]>Accepted_Price or a[1]=='cloudy') for a in data]

data = [[10, "cloudy"], [12, "sunny"], [9, "sunny"]]
print(ThermoControl(data))

希望有所帮助! 输出 - [False, True, True]