我试图在函数中找到一个错误:
def buggy_join(input, sep=","):
return sep.join(input)
当我尝试使用以下方法调用该函数时:
buggy_join(range(6))
显示类型错误,表明找到了预期的String int。
我该如何解决呢。join
函数仅适用于basestring
类型??
input = list(itertools.chain(*enumerate("abc")))
buggy_join(input, ".")
即使对于上述呼叫,它也会导致相同的错误。
答案 0 :(得分:0)
鉴于您已正确找出问题,这里有一个解决方案:
def not_buggy_join(input, sep=","):
return sep.join(map(str, input))
来自the documentation,map(function, iterable)
将
将
function
应用于iterable
的每个项目,并返回结果列表。
在这种情况下,它会将所有内容转换为str
。要使用您自己的示例:
>>> not_buggy_join(itertools.chain(*enumerate("abc")))
'0,a,1,b,2,c'