我在做家庭作业问题时遇到了问题。
“编写一个函数to_str(a),它接受一个数组,a,转换每一个 它的元素为一个字符串(使用str(a [i]))并附加所有这些 串起来。“
这就是我所拥有的
def to_str(a):
for i in a: a.append([i])
return str(a[i])
我不知道如何使用str(a [i]),我想知道是否有人可以指出我正确的方向
答案 0 :(得分:9)
来自文档:
str(object) - >串
返回对象的漂亮字符串表示。如果论证是 一个字符串,返回值是同一个对象。
因此str(a[i])
将返回a[i]
的字符串表示形式,即将a[i]
转换为字符串。
然后,您需要为i
的所有值连接字符串。
至于你的代码,我有以下评论:
i
是a
的元素,而不是您可能正在考虑的索引; a
的元素附加到a
(无休止地,我很害怕); a[i]
会导致异常,因为,正如我所说,i
是一个元素,而不是一个索引; 此外,如果使用str(a[i])
并非严格强制要求,我建议将其作为unpythonic跳过。您根本不需要索引。例子:
''.join(str(element) for element in a)
或
''.join(map(str, a))
将返回您需要的内容。在这两种情况下,str
都适用于a
的所有元素。
不使用索引的最简单(“初学者”)方式将是
s = ''
for element in a:
s += str(element)
return s
它效率稍低,但实际上却有同样的效果。
答案 1 :(得分:1)
将每个元素转换为字符串最容易使用列表理解:
[ str(i) for i in a ]
# equivalent to
[ str(a[i]) for i in range(len(a)) ]
# equivalent to
map(str, a) # most concise, use if you want to feel incredibly clever...
所以你可以编写这个函数:
def to_str2(a):
''.join([str(i) for i in a]) # concatenates the list as a list of strings
您的代码几乎执行此操作:
def to_str(a):
new_a = [] # rather than use the same a!
for i in a:
new_a.append(str(i)) #convert i to string before appending
return new_a
答案 2 :(得分:0)
符合所有任务标准的代码更像是:
def to_str(a):
return reduce(lambda x, y: x + str(y), a, '')
这完全以上述方式完成:首先将它们转换为字符串,然后添加到已经处理过的元素(最初只是emty字符串)的字符串中。
编辑:更清晰(并且受Python 3支持)的方式是使用显式循环元素。它完全相同,同时澄清reduce()的工作原理:
def to_str(a):
result = '' # third argument of reduce()
for item in a:
result += str(item) # does what reduce() lambda argument was doing
return result
答案 3 :(得分:-1)
最简单的方法是:
[str(i) for i in a]
如果你想要一个功能:
def to_str(a):
return [str(i) for i in a]