Python:从列表转换为字符串

时间:2012-09-23 15:38:25

标签: python string list

我在做家庭作业问题时遇到了问题。

  

“编写一个函数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 个答案:

答案 0 :(得分:9)

来自文档:

  

str(object) - >串

     

返回对象的漂亮字符串表示。如果论证是   一个字符串,返回值是同一个对象。

因此str(a[i])将返回a[i]的字符串表示形式,即将a[i]转换为字符串。 然后,您需要为i的所有值连接字符串。

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

  • ia的元素,而不是您可能正在考虑的索引;
  • 您要将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]