具有负小数的PYTHON问题

Nav*_* C. 0 python floating-point list max min

我有一个负浮动列表.我想用它们做直方图.据我所知,Python不能用负数进行操作.它是否正确?该列表类似于[-0.2923998,-1.2394875,-0.23086493等].我正在尝试找到最大和最小数字,以便我可以找出范围是什么.我的代码给出了一个错误:

setrange = float(maxv) - float(minv)
TypeError: float() argument must be a string or a number
Run Code Online (Sandbox Code Playgroud)

这是代码:

f = open('clusters_scores.out','r')
#first, extract all of the sim values
val = []
for line in f:
    lineval = line.split()
    print lineval
    val.append(lineval)
print val
#val = map(float,val)
maxv = max(val)
minv = min(val)
setrange = float(maxv) - float(minv)
Run Code Online (Sandbox Code Playgroud)

放入'val'列表的所有值都是负小数.引用的错误是什么,我该如何解决?

输入文件如下所示:

-0.0783532095182 -0.99415440702 -0.692972552716 -0.639273674023 -0.733029194040.765257900121 -0.755438339963
-0.144140594077 -1.06533353638 -0.366278118372 -0.746931508538 -1.02549039392 -0.296715961215
-0.0915937502791 -1.68680560936 -0.955147543358
-0.0488457137771 -0.0943080192383 -0.747534412969 -1.00491121699
-1.43973471463
-0.0642611118901 -0.0910684525497
-1.19327387414 -0.0794696449245
-1.00791366035 -0.0509749096549
-1.08046507281 -0.957339914505 -0.861495748259
Run Code Online (Sandbox Code Playgroud)

Bre*_*wey 5

结果split()是拆分值列表,这可能是您收到该错误的原因.

例如,如果这样做'-0.2'.split(),您将返回一个包含单个值的列表['-0.2'].

编辑:啊哈!提供您的输入文件后,看起来这就是问题:-0.733029194040.765257900121.我认为你的意思是制作两个独立的花车?

假设像这样的更正文件:

-0.0783532095182 -0.99415440702 -0.692972552716 -0.639273674023 -0.733029194040 -0.765257900121 -0.755438339963
-0.144140594077 -1.06533353638 -0.366278118372 -0.746931508538 -1.02549039392 -0.296715961215
-0.0915937502791 -1.68680560936 -0.955147543358
-0.0488457137771 -0.0943080192383 -0.747534412969 -1.00491121699
-1.43973471463
-0.0642611118901 -0.0910684525497
-1.19327387414 -0.0794696449245
-1.00791366035 -0.0509749096549
-1.08046507281 -0.957339914505 -0.861495748259
Run Code Online (Sandbox Code Playgroud)

以下代码将不再抛出该异常:

f = open('clusters_scores.out','r')
#first, extract all of the sim values
val = []
for line in f:
    linevals = line.split()
    print linevals
    val += linevals
print val
val = map(float, val)
maxv = max(val)
minv = min(val)
setrange = float(maxv) - float(minv)
Run Code Online (Sandbox Code Playgroud)

我已将其更改为从split()获取列表结果并将其连接到列表,而不是附加它,如果文件中有有效输入,这将起作用.