Python列表。查找所有元素均不为零的最大行
我有一个python列表,看起来有点像这样:Python列表。查找所有元素均不为零的最大行,python,list,numpy,max,Python,List,Numpy,Max,我有一个python列表,看起来有点像这样: [[0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,90,1,9999,0,0,0,0,0,0,0,00,0], [0,0,0,0,0,0,0,0,0,0,0,0,00,0],[0,0,90,1,9999,1,2,0,0,9999,0,0,00,0].....till about 30 rows] 我需要从这个列表中找到最大行,它有一个9999,或者换句话说,它不是所有元素都为零。请帮我做这个。谢谢 我试过: print max
[[0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,90,1,9999,0,0,0,0,0,0,0,00,0],
[0,0,0,0,0,0,0,0,0,0,0,0,00,0],[0,0,90,1,9999,1,2,0,0,9999,0,0,00,0].....till about 30 rows]
我需要从这个列表中找到最大行,它有一个9999,或者换句话说,它不是所有元素都为零。请帮我做这个。谢谢
我试过:
print max((numpy.where(v1==9999)[0]))
但是这给了我一些奇怪的错误,比如'int'object not iterable
或者numpy.where不接受关键字n
等等 您想要:
idx,row = max(enumerate(lst),key=lambda r: ( sum(r[1])==0, r[0] ) )
next(x for x in reversed(lst) if sum(x) != 0)
其中lst
是您的列表
或者你想要:
idx,row = max(enumerate(lst),key=lambda r: ( sum(r[1])==0, r[0] ) )
next(x for x in reversed(lst) if sum(x) != 0)
这将返回非“全部为零”行的索引: 以及这些行的最高索引:
maxnonzerorows = max([i for i,j in enumerate(a) if any(j)])
我不这么认为。。。max函数必须找到索引最高的行,但该行的sum==0。@gran\u profaci--您需要更清楚地了解最大行的标准。是的,“max”通常指的是最高值;最高索引(“最后一个”限定项)是一个单独的概念。因此,您可能会注意到,行要么全部为零,要么有一些非零值。我需要找到索引最高的行,该行的sum(row)==0。因此,打印的行必须是最高的非零行。非常感谢你的帮助!的确,我道歉。我必须找到最高的索引值,即具有非零值的最高索引的行。我不愿意尝试解决方案,因为我认为您无法清楚地表达您需要的内容。当你表达你的问题以便理解它时,解决方案将是直接的。你的条件是不明确的:“哪个有9999”和/或“哪个没有所有元素为零”。。。