Ostatnia część mojego programu nie pojawia się, czy ktoś może mi pomóc?

Biorąc pod uwagę listę liczb, normalizuj wartości na liście, która ma być w zakresie [0,1]. Najpierw znajdź minimum i wartości maksymalne na liście, min_val i max_val. Zmień każdy element, X, listy do nowej wartości, Y, S.T. y = (x-min_val) / (max_val-min_val). Wydrukuj zmodyfikowaną listę. Na przykład lista: [2,1,3,4] staje się: [0,33333333333333333, 0,0, 0,66666666666666666, 1.0] Można go przełączyć przykładową listę w swoim programie, ale rozwiązanie nie powinno być zależne od niego. Oznacza to, że jeśli modyfikujemy tylko tę listę i ponownie uruchomić swój program, powinien uzyskać poprawny wynik na podstawie nowej listy.

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)
0
atm atm 28 wrzesień 2012, 20:24

2 odpowiedzi

Najlepsza odpowiedź

W ostatniej części nie robisz nic z elementami mylist.

Potrzebujesz czegoś takiego

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

Korzystanie z jawnej pętli {x0}}, jak próbujesz zrobić:

newlist = []
for x in mylist: # sic!
    newlist.append((x - min_val) / (max_val - min_val))
4
Lev Levitsky 28 wrzesień 2012, 17:06

Przede wszystkim ponownie przypisujesz Newlist na każdym etapie.

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

Następnie najprawdopodobniej trzeba naprawić funkcję "zakres" [jeśli używasz Python2]; I wreszcie prawdopodobnie musisz wprowadzić te int w pływakach, aby uniknąć podziału całkowitego [jeśli używasz Python2]

  for x in mylist:
      newlist.append(float(x-min_val)/(max_val-min_val))
  print(newlist)
1
Pierre-Francoys Brousseau 28 wrzesień 2012, 17:26