我已經證明自己關於「鍵=拉姆達」的功能,並發現其使用一個很好的參考:蟒蛇鍵=拉姆達理解和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