如何单独处理子列表?

时间:2013-10-29 23:26:32

标签: python-2.7

我有以下列表清单:

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]]

任何建议都会令人感激。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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的值上平均分配。”