0

プログラムの最後の部分が表示されません。誰か助けてもらえますか?

数値のリストを指定して、リスト内の値を [0,1] の範囲に正規化します。最初に、リスト内の最小値と最大値、min_val と max_val を見つけます。リストのすべての要素 x を新しい値 y に変更します。st y = (x-min_val)/(max_val-min_val)。変更されたリストを印刷します。たとえば、list: [2,1,3,4] は次のようになります: [0.3333333333333333, 0.0, 0.6666666666666666, 1.0] プログラムでサンプル リストをハードコーディングできますが、ソリューションはそれに依存するべきではありません。つまり、そのリストを変更してプログラムを再実行するだけで、新しいリストに基づいて正しい結果が得られるはずです。

mylist=[3,1,5,9,2]
n=len(mylist)
newlist=[]
print("orginal list is:",mylist)


min_val=min(mylist)
print("minimum value is:",min_val)

max_val=max(mylist)
print("maximum value is:",max_val)


for x in range(1+n+1,1):
    newlist=((x-min_val)/(max_val-min_val))
print(newlist)
4

2 に答える 2

4

最後の部分では、 の要素をまったく処理しませんmylist

次のようなものが必要です

newlist = [(x - min_val)/(max_val - min_val) for x in mylist]

forあなたがしようとしているように、明示的なループを使用して:

newlist = []
for x in mylist: # sic!
    newlist.append((x - min_val) / (max_val - min_val))
于 2012-09-28T17:06:56.913 に答える
1

まず、for のすべてのステップで newlist を再割り当てしています。

  for x in range(1+n+1,1):
      newlist.append((x-min_val)/(max_val-min_val))
  print(newlist)

次に、おそらく「範囲」関数を修正する必要があります[python2を使用している場合]; そして最後に、整数除算を避けるために、これらの int を float にする必要があるでしょう [python2 を使用している場合]

  for x in mylist:
      newlist.append(float(x-min_val)/(max_val-min_val))
  print(newlist)
于 2012-09-28T17:10:34.513 に答える