[python]削除プログラマーの最小数(lv.1)


最小数を削除


整数の配列を保存し、arrから最小数の配列を削除する関数を返します.解決策を完了してください.ただし、返される配列が空の配列の場合は、配列に-1を入力して返します.たとえばarrが[4,3,2,1]の場合は[4,3,2]を返し、[10]の場合は[1]を返します.
せいげんじょうけん
arrは長さが1より大きい配列である.
インデックスi,jについて、i≠jの場合、arr[i]≠arr[j]である.

I/O例


arrreturn[4,3,2,1][4,3,2][10][-1]
わたしの思いついた考え
💡 条件1:最小の数字を削除する必要があります.ソート->sortreversedなどです.
💡 条件2:タイルが空の場合、-1は->append()insert()などを埋めます.
💡 条件3:シナリオが空のシナリオであると判定された場合->len(s) > 1

マイコード


初回試行(正しいX)

def solution(arr):
    if len(arr) > 1:
        set(arr)
        reversed(arr)
        arr.pop()
        return arr
    else:
        set(arr)
        reversed(arr)
        arr.pop()
        arr.append(-1)
        return arr
と書いてありました.

はい.これはただ.😅 ここ🗑 入れて
setを書く理由は最後の制限を見て、重複を解消すべきだと思ったからです.
removeとinsertでもう一度ううう😂

2回目の試み(正解O)

def solution(arr):
    if len(arr) > 1:
        arr.remove(min(arr))
        return arr
    else:
        arr.remove(min(arr))
        arr.insert(0,-1)
        return arr
        
print(solution([4,3,2,1]))
print(solution([10]))

でも[3.2.1.1.1.1]なら一つだけ消すしかないじゃあsetを書きましょうか?そう思うよtestはこの程度になるように作成されています.

他人を解く


一番いいコードを持ってきます.また、ここからは、以前は-1を条件にしていなかった問題なので、コードについては、この点を参照してください.
def rm_small(mylist):
	return [i for i in mylist if i > min(mylist)]

my_list = [4,3,2,1]
print("결과 {} ".format(rm_small(my_list)))
コードはリストネストを使用します.
リストの「mylist」を1つ1つiで表し、最小値を得るためにi > min(mylist)を使用して、最高値よりも大きい子供を返します.
しかし、このコードには直感的に理解できない欠点があり、for文の配列長が長ければ長いほど、必要な時間が長くなる.

正しいコード


私が初めて試したように、popを書く他のコードも見ます.
def rm_small(mylist):
	mylisft.pop(mylist.index(min(mylist)))
    return mylist

my_list = [4,3,2,1]
print("결과 {} ".format(rm_small(my_list)))
Pythonでindex関数はどんな用途がありますか?
index(x)関数がリスト内のx値を返すときのxの位置値.
私たちはまずminで最小値を検索し、次にindexで最小値を検索し、pop()に入れて、特定の値をクリアする関数を完成しました.
これは、popindexinsertremoveなどの使用方法を理解するための基本的な例です.