1

我有一个家庭作业问题。

“编写一个函数 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]),我想知道是否有人可以指出正确的方向

4

4 回答 4

9

从文档:

str(对象) -> 字符串

返回对象的一个​​很好的字符串表示。如果参数是字符串,则返回值是同一个对象。

所以str(a[i])将返回一个字符串表示a[i],即转换a[i]为字符串。然后,您需要连接所有i.

至于你的代码,我有以下评论:

  • i是 的一个元素a,而不是您可能想的索引;
  • a您正在附加to的元素a(恐怕是无休止地);
  • a[i]可能会导致异常,因为就像我说的,i是一个元素,而不是一个索引;
  • 您需要返回一系列字符串,而不是来自一个元素的字符串。

此外,如果 usingstr(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

它的效率有点低,尽管它有效地做同样的事情。

于 2012-09-23T15:43:53.530 回答
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
于 2012-09-23T15:51:15.770 回答
0

满足所有任务标准的代码类似于:

def to_str(a):
    return reduce(lambda x, y: x + str(y), a, '')

它完全按照上面提到的方式做事:首先将它们转换为字符串,然后添加到由已经处理的元素组成的字符串(一开始只是空字符串)。

编辑:更清晰(并受 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
于 2012-09-23T15:42:09.833 回答
-1

最简单的方法是:

[str(i) for i in a]

如果你想要一个功能:

def to_str(a):
    return [str(i) for i in a]
于 2012-09-23T15:49:15.597 回答