2024-09-27 00:18:54 发布
网友
我有以下疑问:
>>> ItemMaster.objects.all()[:3].values_list('rt_rating', 'imdb_rating') [(None, None), (None, Decimal('6.3')), (Decimal('7.6'), Decimal('7.4'))]
获得上述非空值的平均值的最佳方法是什么?对于上述情况,它将是(6.3 + 7.6 + 7.4) / 3。你知道吗
(6.3 + 7.6 + 7.4) / 3
您可以使用列表筛选结果,然后使用sum和len计算平均值:
sum
len
>>> li=[(None, None), (None, Decimal('6.3')), (Decimal('7.6'), >>> nums=[j for tup in li for j in tup if j] >>> av=sum(nums)/len(nums)
您可以使用filter、chain和statistics.mean在python3中完成这一切:
filter
chain
python3
from decimal import Decimal from statistics import mean from itertools import chain l = [(None, None), (None, Decimal('6.3')), (Decimal('7.6'), Decimal('7.4'))] print(mean(filter(None.__ne__,chain.from_iterable(l)))) 7.1
None.__ne__意味着你保留了Decimal('0'),这可能是你想要的,也可能不是你想要的。你知道吗
None.__ne__
Decimal('0')
您可以使用itertools.chain获取所有非空项,然后filter移除空项
itertools.chain
from itertools import chain items = filter(None, list(chain(*ItemMaster.objects.all()[:3].values_list('rt_rating', 'imdb_rating')))) ==> [Decimal('6.3'), Decimal('7.6'), Decimal('7.4')] sum(items)/len(items) ==> Decimal('7.1')
您可以使用列表筛选结果,然后使用
sum
和len
计算平均值:您可以使用
filter
、chain
和statistics.mean在python3
中完成这一切:None.__ne__
意味着你保留了Decimal('0')
,这可能是你想要的,也可能不是你想要的。你知道吗您可以使用
itertools.chain
获取所有非空项,然后filter
移除空项相关问题 更多 >
编程相关推荐