Python 新手。尝试分析最近对点的算法。找到一个example
其中有以下几行:
return min( ((abs(point[i] - point[j]), (point[i], point[j]))
for i in range(numPoints-1)
for j in range(i+1,numPoints)),
key=itemgetter(0))
我不清楚 for 循环是如何评估的。
for 循环与点、键和 itemgetter 有何关系?
当我将此代码放入Ideone时
我在 times() 函数中遇到运行时错误:
def times():
''' Time the different functions
'''
import timeit
functions = [bruteForceClosestPair, closestPair]
for f in functions:
print 'Time for', f.__name__, timeit.Timer(
'%s(pointList)' % f.__name__,
'from closestpair import %s, pointList' % f.__name__).timeit(number=1)
谢谢。
最佳答案
您的 min
代码相当于使用 generator如下:
def getPoints(point, numPoints):
for i in range(numPoints - 1):
for j in range(i + 1, numPoints):
yield (abs(point[i] - point[j]), (point[i], point[j]))
return min(getPoints(point, numPoints), key=itemgetter(0))
正如 @DSM 所指出的,代码中 min
的第一个参数是 generator expression .
关于python - 暴力最接近配对算法 - for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581420/