pythonで2次元配列を用いた条件分岐について


2次元配列liがあり

[code]

    li=[[0,0,0],
        [0,2,0],
        [0,1,0],
        [0,0,0],
        [0,3,0],
        [0,0,0]]
    
[/code]

2次元配列liの中央の列の数字(0,2,1,0,3,0)に、  
(質問1)１つでも0より上の数字がある場合の判定、  
(質問2)すべて0の判定、  
をif文で行いたいです。

(質問3)また、中央の列の数字で、0より上の数字が最後は何行目に出現したか(今回の場合は3が出現した5番目)も知りたいです。

よろしくお願いします。




全ての判定を一度に行ないたいのだと解釈しました。  
「中央の列」は「行」の2番目の要素(インデックスでは1)の事だとします。

「最後は何行目に出現したか」だけ分かればよいので、リストは末尾から見ていっています。  
見つかったら、そこでループを抜けます。  
リストのインデックスは0から始まるので、行数の表示にはインデックスに1足しています。

[code]

    found_target = False
    for i in range(len(li)-1, -1, -1):
        if li[i][1] > 0:
            print("最後尾ターゲットは", li[i][1], "で、", i+1, "行目")
            found_target = True
            break
    if not found_target:
        print("ターゲットなし")
    
[/code]

イテレータ版

[code]

    import itertools as it
    target = list(it.islice(((i, v[1]) for i,v in enumerate(reversed(li)) if v[1]>0), 1))
    if target:
        print("最後尾ターゲットは", target[0][1], "で、", len(li)-target[0][0], "行目")
    else:
        print("ターゲットなし")
    
[/code]

