2017-04-25 19 views
-2

正規化されたリストの合計が1.0になるように正規化された数字のリストを返すnormalist(x、y)関数を作成するにはどうすればよいでしょうか? '要素。例えば、正規化と0パディング

normalist([2,2,2,2,2], 5) => [0.2, 0.2, 0.2, 0.2, 0.2] 
normalist([5], 4)   => [1.0, 0.0, 0.0, 0.0].` 

私はパディングについて移動する方法がわからない、と私はnormalist(x、y)を作るしようとしているので、私は、任意のリストに対して関数を実行することができます。

どのようにあなたのリストを正規化するために
def normalist(): 

    list = [2, 2, 2, 2] 
    s = sum(list) 
    norm = [float(i)/s for i in list] 
    return norm 

print(normalist()) 
+4

あなたのためにコードを書くことが望ましいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ]と[ask]を確認してください。 – MooingRawr

+0

私がこれまでに持っていることを示すために編集しました、すみません、私は非常に新しいです。 –

+2

投稿したコードが、あなたが指定した定義と一致しません。この関数には2つのパラメータが必要です。ほとんどの場合、鉛筆と紙から始めます。どのように*あなた*がその仕事をするかを理解する。例えば、[4,3,2,1]と5を指定すると、あなたはどのようにして戻り値リストを計算しますか?それを計算ステップに分解し、*そのプログラムを試してみてください。あなたが与えたコードは実行されません。 – Prune

答えて

1

:我々は機能でそれをコーディングlstの代わりに、ハードに渡している

def normalist(lst): 
    s = sum(lst) 
    norm = [float(i)/s for i in lst] 
    return norm 

lst = [2, 2, 2, 2] 
print(normalist(lst)) 

注意。また、listのような変数のキーワードの命名も控えてください。 Pythonはこれを可能にしますが、いくつかの関数をオーバーライドします。私は0.0のリストをしたいと私はのn - len(lst)数をしたい:私たちは[0.0]*(n-len(lst))は基本的に言って、一緒にリストを追加したり、追加する+を使用することができますPythonで

def normalist(lst, n): 
    if len(lst) > n: 
     print('length of list is bigger than n') 
     return False 
    s = sum(lst) 
    norm = [float(i)/s for i in lst] + [0.0]*(n-len(lst)) 
    return norm 

lst = [2, 2, 2, 2] 
n = 5 
print(normalist(lst,n)) #outputs [0.25, 0.25, 0.25, 0.25, 0.0] 


は、いくつかの0.0パディングを追加しましたそれら。 len()また、lstのサイズがnより小さいか等しいかどうかを確認しますが、機能を機能させたい場合はこれを変更してください。

+0

ので、もし私は、エラーメッセージを書くつもりですそれを知りませんでした、そして最後に私にこれを手伝ってくれてありがとう、私はあなたがそのようなリストを追加することができ、パッディングのとても良い方法であることを知らなかった0.0 –

+1

あなたが変更して喜んでいる限り、 。このサイトの人々は寒さから脱ぐことができますが、それはひどく多くの回答の質問を見たことがあります。ご覧のように、正しいフォーマットで質問し、試したことと間違ったことを提供するだけであれば、人々はおそらく助けてくれるでしょう。がんばろう。 – MooingRawr

+0

私はコードを学びたいと思っています。私は学習機能を苦労し、実際にコードがどのように実行されているのですか。 –

1

まずは、まっすぐなパラメータを取得してみましょう:

def normalist(in_list, n): 

    s = sum(in_list) 
    norm = [float(i)/s for i in in_list] 
    return norm 

print(normalist([4, 5, 2, 5], 4)) 

出力:今

[0.25, 0.3125, 0.125, 0.3125] 

は、パッドに、単にリストの長さにn個を比較:

for extra in range(len(norm), n+1): 
    # append a 0 to norm 

ノルムがすでに十分に長い場合、これは何も行いません。

+1

これまでコーディングに興味のあることの1つは、あなたが何かに取り組むことができるさまざまな方法ですが、解決策はありません。あなたの助言と助けを借りてありがとうございます。 –