使用列表索引对元素列表求和

时间:2018-12-24 14:41:31

标签: python python-3.x indexing sum

我正在寻找厨房(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)时,它工作得很好 谁能解释我的原因?

5 个答案:

答案 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]])