タイトルは、非常に簡潔に問題を記述するのが非常に困難になるため、主にあまり良くありません。もし誰かが以下の内容を読んだ後にタイトルを改善できたら、それをしてください。数字のリストを編集する0からnまでしか含めることができないn
これは問題です。入力は[1,3,4,7]
のような数字の配列で、出力は[1,2,3,4]
のような配列になります。これは、各値がその値に基づいて入力配列内のどのランクにランク付けされているかを示すためです。
他のいくつかの例:
In[1] : [4,3,7,9]
Out[1] : [2,1,3,4]
In[2] : [0,4,1,9]
Out[2] : [0,2,1,3]
In[3] : [1,0,0,0]
Out[3] : [1,0,0,0]
ここで注目すべきクセが配列のゼロが含まれている場合In[1]
のためにそれがゼロを含んでいないので、一方でそれは、ゼロからのランキング開始しなければならないということである、配列が1からランク付けを開始します。
現在、私はこのコードを使用しています:
def argsort(seq):
ix = list(range(len(seq)))
ix.sort(key=lambda x: seq[x])
out = [0] * len(i)
for i, x in enumerate(ix):
if seq[x] != 0:
out[x] = i
if 0 in seq:
return out
else:
return [each+1 for each in out]
現在、解決策は、最初の2例のために動作します。しかし、それはケース3に失敗し、結果としてこれを返す:あなたはこのようにそれを行うだけでできるので、あなたはPythonのリストではありません(あなたがタグ付けされてきたように)numpyの配列きたよう[3,0,0,0]
あなたが現在行っていることを教えてくれたので、問題は何ですか?あなたが持っているものとあなたが望むものとの違いを指定してください。 –
@JesseBarnett絶対に正しいです。私を許して。反映するように編集します。 –
私の提供するソリューションをチェックできますか? 3つすべての場合に有効です。 –