列表没有显示

时间:2012-09-28 16:24:20

标签: python python-3.x

我的程序的最后一部分没有显示,有人可以帮助我吗?

给定一个数字列表,将列表中的值标准化为[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)

2 个答案:

答案 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)