如何从列表中的对象中获取特定属性的总和?
How do I get the sum of specific attributes from objects in a list?
我有一个“Tile”对象列表,其属性定义如下:
class Tile:
def __init__(self, water, soil):
self.water = water
self.soil = soil
Lake = Tile(20, 0)
Dirt = Tile(0, 10)
Tree = Tile(-5, -5)
这些对象填写以下列表:
environment = [Dirt, Tree, Lake, Dirt, Dirt]
有没有办法让我得到列表中所有对象的 .water
和 .soil
的总和?
水域加起来:
sum(tile.water
for tile in environment)
同样适用于土壤值:
sum(tile.soil
for tile in environment)
不清楚您是否希望将它们合并:
sum(tile.water + tile.soil
for tile in environment)
对于您的问题,首先想到的事情之一是遍历 collection 并获取土壤和水的值,如下所示:
soil = water = 0
for tile in environment:
soil += tile.soil
water += tile.water
如果您想将两者合并,只需修改代码,删除一个变量并将 tile.soil
和 tile.water
添加到合并的总和中。
有更高级的方法可以做到这一点,使用 J_H 的答案中的 sum
函数,甚至使用 map
和 operator.attrgetter
恶作剧,但是以你的 Python 熟练程度看来,这并不值得。
希望这对您有所帮助:)
我有一个“Tile”对象列表,其属性定义如下:
class Tile:
def __init__(self, water, soil):
self.water = water
self.soil = soil
Lake = Tile(20, 0)
Dirt = Tile(0, 10)
Tree = Tile(-5, -5)
这些对象填写以下列表:
environment = [Dirt, Tree, Lake, Dirt, Dirt]
有没有办法让我得到列表中所有对象的 .water
和 .soil
的总和?
水域加起来:
sum(tile.water
for tile in environment)
同样适用于土壤值:
sum(tile.soil
for tile in environment)
不清楚您是否希望将它们合并:
sum(tile.water + tile.soil
for tile in environment)
对于您的问题,首先想到的事情之一是遍历 collection 并获取土壤和水的值,如下所示:
soil = water = 0
for tile in environment:
soil += tile.soil
water += tile.water
如果您想将两者合并,只需修改代码,删除一个变量并将 tile.soil
和 tile.water
添加到合并的总和中。
有更高级的方法可以做到这一点,使用 J_H 的答案中的 sum
函数,甚至使用 map
和 operator.attrgetter
恶作剧,但是以你的 Python 熟练程度看来,这并不值得。
希望这对您有所帮助:)