【Python】最小数を除く


質問する


整数の配列を保存し、arrから最小数の配列を削除する関数を返します.解決策を完了してください.ただし、返される配列が空の配列の場合は、配列に-1を入力して返します.たとえばarrが[4,3,2,1]の場合は[4,3,2]を返し、[10]の場合は[1]を返します.

せいげんじょうけん


arrは長さが1より大きい配列である.
インデックスi,jについて、i≠jの場合、arr[i]≠arr[j]である.

マイコード

def solution(arr):
    tmp = sorted(arr)[0]
    arr.remove(tmp)

    if (len(arr) == 0):
        arr.append(-1)
    return arr
まずsort配列の最小数をtmpという変数に格納し、元の配列のremoveの方法で記述します.ただし、配列に要素が1つしかない場合は、配列に-1を追加することで[1]を返すことができます.

他人のコード

def solution(mylist):
    return [i for i in mylist if i > min(mylist)] or [-1]
コードは簡潔ですね.リスト内の要素を1つずつ回転させ、min()でチェックされたリストの最高値iと比較する.iの値がより大きい場合、iを含むリストが生成される.
与えられたリストが[4,3,2,1]であると仮定すると、生成されたリストは[4][4,3][4,3,2]である.
リスト内の要素が1つしかない場合は[1]を返します.