python key=lambda理解和c#等效
我已经记录了我自己关于“key=lambda”功能的情况,并找到了一个很好的使用参考: 正因为如此,我才理解了以下代码“应该”做什么:python key=lambda理解和c#等效,python,lambda,key,min,Python,Lambda,Key,Min,我已经记录了我自己关于“key=lambda”功能的情况,并找到了一个很好的使用参考: 正因为如此,我才理解了以下代码“应该”做什么: 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])), k
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)
我的疑问是,作为一名python学徒,尽管学习速度很快:
1-我是否需要追溯调用堆栈以了解检索hulls[I][j]
时得到的“类型”或更简单的“值”?(我读到python使用了“duck-typing”,如果我没有弄错的话,这可以解释这种需要)
2-key=lambda j
基本上是“检索”外壳的[i][j]
元素,不是吗?但这是否意味着hulls[i][j]
是一种整数类型,因为“for”迭代使用for的xrange
调用“min”
3-可选:是否有与python的min
相当或可比的c#
提前谢谢
外壳[i][j]='foo'
min('a','b')是'a'
谢谢你的帮助。关于第二点,只要我能“min”任何两种类型,这对python是公平的?基本上,我将“xrange”(如果我没有弄错的话,它将返回一个int数组)与其他东西混合的事实并不意味着“其他东西”是一个int!?!哈!我讨厌python的不严格:)事实上,您并不是在用lambda来定义“xrange”。稍微解构一下:xrange部件在[0,len(外壳[i])范围内构造数字,键定义了将被“minned”的特定值。表示为列表理解,您可能会或可能不会发现更容易阅读:
j=min([hulls[i][x]表示xrange中的x(len(外壳[i]))
哈哈,这太疯狂了,没有帮助我是不会得到的。:D
j = min(xrange(len(hulls[i])), key=lambda j: hulls[i][j])