我正在寻找厨房(18.0)和卧室面积(10.75)的总和
# Create the areas list
areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom",
10.75, "bathroom", 9.50]
# Sum of kitchen and bedroom area: eat_sleep_area
eat_sleep_area = sum(areas[3],areas[-3])
# Print the variable eat_sleep_area
print(eat_sleep_area)
但是当我尝试运行代码时,它会说: TypeError:“ float”对象不可迭代 我还观察到,当我使用其他函数(如min,max)时,它工作得很好 谁能解释我的原因?
答案 0 :(得分:3)
对于这种事情,您需要使用字典而不是列表:
areas = {
'hallway': 11.25,
'kitchen': 18.0,
'living room': 20.0,
'bedroom': 10.75,
'bathroom': 9.50,
}
然后您可以像这样总结它们:
result = areas['kitchen'] + areas['bedroom']
字典允许按键查找。 Check the docs了解更多。
答案 1 :(得分:3)
在Python中,sum(iterable[, start])
需要将iterable作为第一个参数。考虑只将您的参数包装在一个列表中,例如:
sum([areas[3],areas[-3]])
答案 2 :(得分:0)
使用字典会更好:
areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom", 10.75, "bathroom", 9.50]
areas = { name : measures for name, measures in zip(areas, areas[1:])}
result = sum(areas[name] for name in ('kitchen', 'bedroom'))
print(result)
输出
28.75
答案 3 :(得分:0)
sum()函数从左到右添加开始和给定可迭代项。
sum()参数 可迭代-可迭代(列表,元组,字典等)的项的总和将被找到。通常,可迭代项应为数字。 开始(可选)-此值添加到可迭代项的总和。 start的默认值为0(如果省略)
浮点数不可迭代
答案 4 :(得分:0)
可以用sum
运算符替换add
from operator import add
eat_sleep_area = add(areas[3],areas[-3]) # if you have only two entities to add otherwise use sum and pass an iterator
或加和
eat_sleep_area = add([areas[3],areas[-3]])