Python的“类型错误:只能拼接元组(而不是‘INT’),以元组”
我写了一段Python代码这样Python的“类型错误:只能拼接元组(而不是‘INT’),以元组”
import random
val_hist = []
for i in range(100):
val_hist.append(random.randint(0,1000))
def print__(x):
print type(x[1])
map(lambda x: print__(x), list(enumerate(val_hist)))
l_tmp = list(enumerate(val_hist))
idx_list = map(lambda x: x[0], l_tmp)
val_list = map(lambda x: x[1], l_tmp)
print idx_list
print val_list
reduce(lambda sum, x: sum + x[1], list(enumerate(val_hist)))
print reduce(lambda sum, x: sum + x, val_hist)
print reduce(lambda sum, x: sum + x[1], list(enumerate(val_hist)))
当我运行这段代码,我得到这个错误“类型错误:只能连接元组(不是“int”)到元组“。 有谁知道这是怎么发生的? 还是有人知道python函数如何精确地减少工作?
您需要提供第三个参数来减少,这就是initializer
。从docs:
If initializer is not given and iterable contains only one item, the first item is returned.
既然你没有明确提供initializer
参数,reduce
使用来自list(enumerate(val_hist))
的第一要素,这恰好是一个元组。你试图将这个元组与x[1]
一起添加,这是一个整数。
所以,只需更新您的reduce
与initializer
值0,像这样:
>>> reduce(lambda sum, x: sum + x[1], list(enumerate(val_hist)), 0)
>>> 48279
是的,这很有道理。非常感谢你。 –
@bozhou酷,不要忘记标记为“接受”的最佳答案:) –
您是否尝试过阅读[文件](https://docs.python.org/2/library/functions的.html#减少)? –