Python 2.7 如何单独处理子列表?

Python 2.7 如何单独处理子列表?,python-2.7,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

我有以下清单:

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

任何建议都将不胜感激。

有了这些建议,您可以获取所有小于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
lessthanum=[]
对于e中的值:
对于e中的子值:
如果子值<2.5:
lessThanNum.append(子值)#获取小于2.5的所有值

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

我认为您只需要将代码包装成一个循环,在每个子列表上运行:

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

“将其总和分配给子列表中的其余值”是什么意思?@beroe:小于2.5的值的总和除以大于2.5的值,给我们一个输出示例。例如:如果我有[2,3,4],则2小于2.5,长度剩余值为2。So 2/len(值>2.5)。然后将其添加到每一个大于2.5的值中,该行返回以下错误:newlist=[x+j代表k中的x]TypeError:只能将列表(而不是“float”)连接到listGreat。你做了99%的工作,几乎成功了。是的,在列表理解中重新使用名称时必须小心,因为这些值仍然存在。。。。另外,如果你想要像
[[6],[5],[5.5]]
这样的列表格式,你可以添加括号:
.append([max()])
而不是
。append(max())
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]