繁体   English   中英

python key = lambda理解和C#等效

[英]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或与之等效?

提前致谢。

  1. 是。 特别是,hulls [i] [j]可以是任何类型或任何值,具体取决于运行时发生的情况。 例如,所有的外壳都可以是整数,但是您可以设置hulls[i][j]='foo'

  2. 是的,那里的lambda返回外壳中第i行的第j个元素。 hulls [i] [j]可以是任何可比较的东西,例如min('a','b') is 'a'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM