如何在python列表中追加字段值并忽略无值

问题描述 投票:1回答:3

我需要计算一些字段值的平均值,并忽略计算的任何值,这就是我能做的

@api.multi
def update_bar(self):
    list=[self.item.pro, self.drc.pro, self.dsc.pro, self.org.pro, 
          self.car.pro, self.model.pro, self.year.pro]
    for rec in list:
        if rec:
            self.new_list = list.append(rec)
    print(self.new_list)
    pass
python python-3.x odoo odoo-11
3个回答
2
投票

我会使用列表理解来做到这一点

def average_or_none(ls):
    temp = [x for x in ls if x is not None]

    if temp:
        return sum(temp) / len(temp)
    else:
        return None 

0
投票

您始终可以使用过滤功能。以下示例。因此,您将获得第一个列表,但Nones已经过滤掉了。

new_list = filter(lambda x: x is not None, list)
mean = sum(new_list)/len(new_list)

0
投票

您可以从列表中过滤None值,并进一步进行常规求和/平均值计算。让我们过滤掉下面的None-

list=[self.item.pro, self.drc.pro, self.dsc.pro, self.org.pro, 
          self.car.pro, self.model.pro, self.year.pro]
list_without_none = [x for x in list if x is not None]

要计算平均值,请说明您的价值如下。

# Python program to get average of a list 
def Average(lst): 
    return sum(lst) / len(lst) 

# Driver Code 
list_without_none = [15, 9, 55, 41, 35, 20, 62, 49] 
average = Average(list_without_none) 
print(average)

查看更多DEMO's

© www.soinside.com 2019 - 2024. All rights reserved.