的整數我試圖調用包含整數和長名單上減少列表的減少。例如,我想打電話給使用包含在多頭蟒蛇
reduce(int.__mul__, [ 231212312412L, 3 ], 1)
但我得到一個未實現的錯誤。當我用long的mul方法替換int的mul方法時,它會抱怨它獲得了一個int。我必須將它們映射到一個很長的頭?喜歡這個。
reduce(long.__mul__, map(long, [ 12312412314L, 5 ]), 1L)
的整數我試圖調用包含整數和長名單上減少列表的減少。例如,我想打電話給使用包含在多頭蟒蛇
reduce(int.__mul__, [ 231212312412L, 3 ], 1)
但我得到一個未實現的錯誤。當我用long的mul方法替換int的mul方法時,它會抱怨它獲得了一個int。我必須將它們映射到一個很長的頭?喜歡這個。
reduce(long.__mul__, map(long, [ 12312412314L, 5 ]), 1L)
>>> from operator import mul
>>> reduce(mul, map(long, [ 12312412314L, 5 ]), 1)
61562061570L
>>> reduce(mul, [ 231212312412L, 3 ], 1)
693636937236L
>>>
運營商有:
你想operator.mul
。
int.__mul__
只能乘兩個整數,同樣,long.__mul__
二次長。但正常的*
操作會自動處理不同的數值類型爲你,這樣你就可以做的是簡單地使用假冒的工作拉姆達「*」:
reduce(lambda x,y: x*y, [ 231212312412L, 3 ], 1)
還是有的,使用operator.mul
但記得要導入它第一! (這很可能會更快,實際上)
你不需要花哨reduce
。
total = 1
for x in your_list:
total *= x
這是更具可讀性和更快
你也不需要指定一個初始值,它會從序列中的前兩個項目啓動。 – agf
只是讓一個該死的'for'循環。它更快,更易讀。 – JBernardo