我已经证明自己关于“键=拉姆达”的功能,并发现其使用一个很好的参考:蟒蛇键=拉姆达理解和C#相当于
http://www.daniweb.com/software-development/python/threads/376964
感谢我才明白做下面的代码是“应该”是什么:
def _min_hull_pt_pair(hulls):
"""Returns the hull, point index pair that is minimal."""
h, p = 0, 0
for i in xrange(len(hulls)):
j = min(xrange(len(hulls[i])), key=lambda j: hulls[i][j])
if hulls[i][j] < hulls[h][p]:
h, p = i, j
return (h, p)
但是我有下面的语法问题:
j = min(xrange(len(hulls[i])), key=lambda j: hulls[i][j])
我怀疑,是一条巨蟒学徒尽管快速学习:
1,我需要追溯调用堆栈像明白了什么“型”或者更简单的“价值”我得到检索hulls[i][j]
? (我读过python使用'duck typing',这可以解释这种需求,如果我没有弄错的话)。
2- key=lambda j
基本上'检索'外壳的[i][j]
元素,不是吗?但是这是否意味着hulls[i][j]
是一个整数类型,因为'for'迭代使用for的xrange
来调用'min'?
3-可选:是否存在与Python的min
相当或可比较的c#?
在此先感谢。
感谢您的帮助。所以关于第二点,只要我能'分'任何两种类型,这对蟒蛇公平吗?基本上,我用'别的'xrange'(如果我没有弄错的话返回一个int数组)的事实并不意味着'别的'是int!!哈!我讨厌python的不严格:) – roamcel
事实上,你并没有用lambda来制定'xrange'。解构一点:xrange部分构造范围[0,len(hulls [i]))中的数字,key定义将被“缩小”的特定值。表达为一个列表理解,你可能会发现也可能不会更容易阅读:'j = min([shell] [i] [x] for x in xrange(len(hulls [i]))])' – ryanbraganza
hahah that's crazy ,如果没有帮助,我不会得到它。 :d – roamcel