[英]python key=lambda understanding and c# equivalent
我已经记录了有关“ key = lambda”功能的信息,并找到了关于其使用的良好参考:
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])
我的疑惑是,尽管学习速度很快,但还是一名Python学徒:
1-我是否需要像跟踪堆栈一样追溯调用,以了解我获取hulls[i][j]
是什么“类型”或更简单的“值”? (我读到python使用'鸭子类型',如果我没记错的话,这将解释这种需求)。
2- key=lambda j
基本上“检索”了船体的[i][j]
元素,不是吗? 但这是否意味着hulls[i][j]
是整数类型,因为“ for”迭代使用for的xrange
调用“ min”?
3-可选:是否有ac#等价于python的min
或与之等效?
提前致谢。
是。 特别是,hulls [i] [j]可以是任何类型或任何值,具体取决于运行时发生的情况。 例如,所有的外壳都可以是整数,但是您可以设置hulls[i][j]='foo'
。
是的,那里的lambda返回外壳中第i行的第j个元素。 hulls [i] [j]可以是任何可比较的东西,例如min('a','b') is 'a'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.