Python:从列表转换为字符串

Python:从列表转换为字符串,python,string,list,Python,String,List,我有一个家庭作业问题 将一个函数写入_str(a),该函数接受一个数组a,并转换 将其元素添加到字符串中(使用str(a[i]),并附加所有这些元素 串在一起。” 这就是我所拥有的 def to_str(a): for i in a: a.append([i]) return str(a[i]) 我不知道如何使用str(a[I]),我想知道是否有人能给我指出正确的方向满足所有任务标准的代码类似于: def to_str(a): return reduce(lambda

我有一个家庭作业问题

将一个函数写入_str(a),该函数接受一个数组a,并转换 将其元素添加到字符串中(使用str(a[i]),并附加所有这些元素 串在一起。”

这就是我所拥有的

def to_str(a):
    for i in a: a.append([i])
    return str(a[i])

我不知道如何使用str(a[I]),我想知道是否有人能给我指出正确的方向

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

def to_str(a):
    return reduce(lambda x, y: x + str(y), a, '')
它完全按照前面提到的方式进行操作:首先将它们转换为字符串,然后将它们添加到由已处理的元素生成的字符串中(开始时只是emty字符串)

编辑:更清晰的方法(由Python 3支持)是通过元素使用显式循环。它的作用完全相同,同时阐明了reduce()的工作原理:


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

def to_str(a):
    return reduce(lambda x, y: x + str(y), a, '')
它完全按照前面提到的方式进行操作:首先将它们转换为字符串,然后将它们添加到由已处理的元素生成的字符串中(开始时只是emty字符串)

编辑:更清晰的方法(由Python 3支持)是通过元素使用显式循环。它的作用完全相同,同时阐明了reduce()的工作原理:

从文档中:

str(object)->string

返回对象的良好字符串表示形式。如果论点是正确的 一个字符串,返回值是同一个对象

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

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

  • i
    a
    的一个元素,而不是您可能认为的索引
  • 您正在将
    a
    的元素添加到
    a
    (恐怕是无止境的)
  • a[i]
    会导致异常,因为正如我所说,
    i
    是一个元素,而不是索引
  • 您需要返回字符串的串联,而不是来自一个元素的字符串
另外,如果使用
str(a[i])
不是严格强制的,我建议将其作为非音速跳过。你根本不需要索引。示例:

''.join(str(element) for element in a)

我会归还你需要的东西。在这两种情况下,
str
应用于
a
的所有元素

不使用索引的最简单理解(“初学者”)方法是

s = ''
for element in a:
    s += str(element)
return s
它的效率稍低一点,尽管它能有效地完成同样的事情。

来自文档:

str(object)->string

返回对象的良好字符串表示形式。如果论点是正确的 一个字符串,返回值是同一个对象

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

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

  • i
    a
    的一个元素,而不是您可能认为的索引
  • 您正在将
    a
    的元素添加到
    a
    (恐怕是无止境的)
  • a[i]
    会导致异常,因为正如我所说,
    i
    是一个元素,而不是索引
  • 您需要返回字符串的串联,而不是来自一个元素的字符串
另外,如果使用
str(a[i])
不是严格强制的,我建议将其作为非音速跳过。你根本不需要索引。示例:

''.join(str(element) for element in a)

我会归还你需要的东西。在这两种情况下,
str
应用于
a
的所有元素

不使用索引的最简单理解(“初学者”)方法是

s = ''
for element in a:
    s += str(element)
return s
它的效率稍低一点,尽管它能有效地完成同样的事情。

最简单的方法是:

[str(i) for i in a]
如果您想要一个函数:

def to_str(a):
    return [str(i) for i in a]
def to_str2(a):
    ''.join([str(i) for i in a]) # concatenates the list as a list of strings
最简单的方法是:

[str(i) for i in a]
如果您想要一个函数:

def to_str(a):
    return [str(i) for i in a]
def to_str2(a):
    ''.join([str(i) for i in a]) # concatenates the list as a list of strings

使用列表理解最容易将每个元素转换为字符串:

[ 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_str(a):
    return [str(i) for i in a]
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

使用列表理解最容易将每个元素转换为字符串:

[ 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_str(a):
    return [str(i) for i in a]
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

我认为在
a
本身的元素上循环比在索引上循环更干净。@DSM我也是,可惜这是作业的一部分。我也在回答中加入了这一点。@Tadeck我已经收回了我的反对票;这并不能改变这样一个事实,即当这个问题受到大多数关注时,您的答案在相当长的一段时间内包含了不正确的代码。至于
reduce
,我并不反对它,但如果没有详细的解释,我不会向新手提出建议。这个问题,用老话来说,是一个
[家庭作业]
问题,所以答案的质量在很大程度上取决于冗长,而不是优雅。无论如何,这里使用的正确方法是
str.join
,而不是
reduce
,我相信。我认为在
a
本身的元素上循环比在索引上循环更干净。@DSM我也是,太糟糕了,这是作业的一部分。我也在回答中加入了这一点。@Tadeck我已经收回了我的反对票;这并不能改变这样一个事实,即当这个问题受到大多数关注时,您的答案在相当长的一段时间内包含了不正确的代码。至于
reduce
,我并不反对它,但如果没有详细的解释,我不会向新手提出建议。这个问题,用老话来说,是一个
[家庭作业]
问题,所以答案的质量在很大程度上取决于冗长,而不是优雅。无论如何,在这里正确使用的是
str.join
,而不是
reduce
,我相信。+1(不确定为什么被否决,但可能
reduce
没有解释就让人困惑了?)但是,我喜欢map/reduce solti