0

我有以下列表:

e = [[2,4,5],[3,2,4],[3,1,5]]

我想在每个子列表中获取小于 2.5 的值,并将它们的总和分配给子列表中的其余值。然后从每个子列表中获取最大值(3 个最终值)。我正在尝试以下但无济于事:

l = sum([i for i in e if i < 2.5])
k = [i for i in e if i > 2.5] # to distribute smaller values
j = l/len(k)
m = max([i+j for i in k])

所以输出应该是这样的:

[[6],[5],[5.5]]

任何建议将不胜感激。

4

2 回答 2

1

我认为您只需要将代码包装到适用于每个子列表的循环中:

mainlist = [[2,4,5],[3,2,4],[3,1,5]]

m = []
for e in mainlist:
    l = sum([i for i in e if i < 2.5])
    k = [i for i in e if i >= 2.5] # to distribute smaller values
    j = float(l)/len(k)
    newlist = [x + j for x in k]
    m.append(max(newlist))

print m

输出:

[6.0, 5.0, 5.5]
于 2013-10-29T23:43:06.507 回答
0

有了这个,您可以获取所有小于 2.5 的值

        lessThanNum = []

        for values in e:
            for subvalues in e:
                if subvalues < 2.5:
                   lessThanNum.append(subvalues) # get all values less than 2.5

我还不明白“小于 2.5 的值的总和除以大于 2 的值”是什么意思。

于 2013-10-29T23:35:42.793 回答