我的程序的最后一部分没有显示,有人可以帮助我吗?
给定一个数字列表,将列表中的值标准化为[0,1]范围。首先找到列表中的最小值和最大值min_val和max_val。将列表的每个元素x更改为新值y,s.t。 y =(x-min_val)/(max_val-min_val)。打印修改后的列表。 例如列表:[2,1,3,4]变为:[0.3333333333333333,0.0,0.66666666666666666,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)
答案 0 :(得分: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))
答案 1 :(得分:1)
首先,您将在for的每一步重新分配新列表。
for x in range(1+n+1,1):
newlist.append((x-min_val)/(max_val-min_val))
print(newlist)
然后,你很可能需要修复你的'范围'函数[如果使用python2]; 最后你可能需要将这些int组成浮点数以避免整数除法[如果使用python2]
for x in mylist:
newlist.append(float(x-min_val)/(max_val-min_val))
print(newlist)