这是一个相当简单的问题,我试图以最有效的方式解决。
我正在查询输出一系列命名元组的API,我希望累积并求和每个输出元组的值。
即我正在做以下事情:
for time_series in api_query:
for ts_tuple in time_series.header:
print(ts_tuple)
会输出如下内容:
Point(end_time='2017-07-05T12:12:24.471Z', start_time='2017-07-05T12:11:24.471Z', value=0)
Point(end_time='2017-07-05T12:13:24.471Z', start_time='2017-07-05T12:12:24.471Z', value=48)
Point(end_time='2017-07-05T12:14:24.471Z', start_time='2017-07-05T12:13:24.471Z', value=11)
Point(end_time='2017-07-05T12:15:24.471Z', start_time='2017-07-05T12:14:24.471Z', value=0)
Point(end_time='2017-07-05T11:52:24.471Z', start_time='2017-07-05T11:51:24.471Z', value=0)
我需要获取每个namedtuple中的值,并总计总和。
我得到的是:
total_foo = []
for time_series in api_query:
for ts_tuple in time_series.header:
total_foo.append(ts_tuple.value)
然后只需在total_foo上调用一笔金额。
我想知道是否有人可以提出更多的pythonic方式?我正试图摆脱只是使用for循环并一直追加到列表。
注意:对于某些背景,api通过google-cloud-python
库查询Stackdriver指标。
答案 0 :(得分:2)
您可以使用带有嵌套循环的生成器表达式,如下所示:
sky
答案 1 :(得分:0)
您可以将原始循环更改为总和:
total_foo = 0
for time_series in api_query:
for ts_tuple in time_series.header:
print(ts_tuple)
total_foo += int(ts_tuple.value)