我有以下值列表列表,我想在所有值中找到最小值.
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)
为什么这种方法错了,为什么?
我创建了这个生成器函数:
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)
为什么生成的值不同?