0

私は少しこのように見える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((numpy.where(v1==9999)[0])) 

'int' object not iterableしかし、これは私になどのようないくつかの奇妙なエラーを与えましnumpy.where does not accept keywords nた!!

4

3 に答える 3

2

欲しいですか:

idx,row = max(enumerate(lst),key=lambda r: ( sum(r[1])==0, r[0] ) )

あなたのリストはどこにlstありますか。

またはあなたが欲しいですか:

next(x for x in reversed(lst) if sum(x) != 0)
于 2012-11-10T02:00:50.967 に答える
0
    python 3.2

    #   if you want to find how many rows in your list has 9999
    v=[[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]]

    len([i for i in v if 9999 in i])




 #   if any element in your rows is 9999 then all the elements of that row 
 # cannot be 0. then if you want to know how many rows have all the elements 0.


     len([i for i in v if sum(i)==0])
于 2012-11-10T03:03:53.190 に答える
0

これにより、「すべてゼロ」以外の行を持つインデックスが返されます。

nonzerorows = [i for i,j in enumerate(a) if any(j)]

そして、そのような行の最高のインデックス:

maxnonzerorows = max([i for i,j in enumerate(a) if any(j)])
于 2012-11-12T14:28:45.293 に答える