我正在尝试使用来自网络的数据进行一些基本计算。出于这个原因,我找到了一些提取伦勃朗作品开始和结束年份的代码。它将它保存在一个列表中
date_list =[(work['datebegin'], work['dateend']) for work in `rembrandt2_parsed['records']]`
date_list 是一个列表,其中包含哈佛艺术博物馆中一些伦勃朗作品的开始和结束年份的元组。为了完整起见,它看起来像这样:
[(0, 0), (1648, 1648), (1637, 1647), (1626, 1636), (0, 0), (1638, 1638), (1635, 1635), (1634, 1634), (0, 0), (0, 0)]
现在我想做一些基本的计算,我想对这个元组列表求和,并计算它们不为 null 的年份的平均值。我想出了一个解决方案:
datebegin =0
date_end =0
count_begin =0
count_end =0
for x, y in date_list:
if x !=0:
datebegin +=x
count_begin +=1
if y != 0:
date_end +=y
count_end +=1
final_date_begin = datebegin/count_begin #value = year 1636
final_date_end = date_end/count_end #value = year 1639
但我认为这可以做得更有效/pythonic。首先是因为我似乎需要大量代码来完成这样一个简单的任务,其次是因为如果我这样做的话,我需要初始化 4(!) 个全局变量。有人可以启发我并向我展示一种更有效的方法来解决这个问题吗?