小编Alv*_*vin的帖子

了解用于在列表列表中查找最小值的python策略

我有以下值列表列表,我想在所有值中找到最小值.

Q = [[8.85008011807927, 4.129896248976861, 5.556804136197901], 
     [8.047707185696948, 7.140707521433818, 7.150610818529693],  
     [7.5326340018228555, 7.065307672838521, 6.862894377422498]]
Run Code Online (Sandbox Code Playgroud)

我打算做以下事情:

min(min(Q))
Run Code Online (Sandbox Code Playgroud)

我在一个较小的例子上尝试了这种方法,它可以工作:

>>>b = [[2,2],[1,9]]
>>>min(b)
[1, 9]
>>>min(min(b))
1
Run Code Online (Sandbox Code Playgroud)

但是在原始列表Q上使用它会返回错误的结果:

>>> min(Q)
[7.5326340018228555, 7.065307672838521, 6.862894377422498]
>>> min(min(Q))
6.862894377422498
Run Code Online (Sandbox Code Playgroud)

为什么这种方法错了,为什么?

python list

6
推荐指数
1
解决办法
157
查看次数

相同生成器函数的不同调用中的最后十进制数字精度变化[python]

我创建了这个生成器函数:

def myRange(start,stop,step):
    r = start
    while r < stop:
        yield r
        r += step
Run Code Online (Sandbox Code Playgroud)

我用两种不同的方式使用它.第一名:

for x in myRange(0,1,0.1):
    print x
Run Code Online (Sandbox Code Playgroud)

结果:

0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
Run Code Online (Sandbox Code Playgroud)

第二种方式调用函数:

a = [x for x in myRange(0,1,0.1)]
Run Code Online (Sandbox Code Playgroud)

这导致:

[0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.9999999999999999]
Run Code Online (Sandbox Code Playgroud)

为什么生成的值不同?

python function generator floating-point-precision

3
推荐指数
1
解决办法
120
查看次数