list(map(lambda x, y: x+y, [1,2,3], [1,2,3,4]))
如果兩個列表的長度不同,程序是否會評估,直到其中一個列表完成其迭代?所以對於上面的例子,它會是[2,4,6]。當兩個參數在Python映射函數中具有不同長度的列表時會發生什麼?
list(map(lambda x, y: x+y, [1,2,3], [1,2,3,4]))
如果兩個列表的長度不同,程序是否會評估,直到其中一個列表完成其迭代?所以對於上面的例子,它會是[2,4,6]。當兩個參數在Python映射函數中具有不同長度的列表時會發生什麼?
是的,最短的輸入參數用於設置輸入長度的邊界。 According to the docs:
返回一個將函數應用於每個可迭代項的迭代器,以產生結果。如果傳遞額外的迭代參數,函數必須採用多個參數並應用於並行所有迭代中的項目。 使用多個迭代器時,當最短的迭代器耗盡時,迭代器停止。
值得注意:這是從Python 2.x的行爲,其評估使用最長的列表,並根據需要延伸較短的列表(一個或多個)與None
不同。
的Python 3.3參考:
圖(功能,可迭代,...):返回適用函數來迭代的每一個項目,得到的結果的迭代器。如果傳遞額外的迭代參數,函數必須採用多個參數並應用於並行所有迭代中的項目。 使用多個迭代器時,當最短的迭代器耗盡時,迭代器停止。
+1注意到Python 2.x使用較長的列表進行評估。 (具體來說,一旦較短的列表完成,就將NoneType用作填充。) – DreadPirateShawn