我遇到了作业问题。Python:从列表转换为字符串
“写的函数,to_str(a)中,接受一个阵列,每个 其元素转换为字符串(使用STR(A [1])),并且所有这些 串附加在一起。 “
这是我
def to_str(a):
for i in a: a.append([i])
return str(a[i])
我不知道如何使用STR(A [1]),我想知道,如果有人可以点我到正确的方向
我遇到了作业问题。Python:从列表转换为字符串
“写的函数,to_str(a)中,接受一个阵列,每个 其元素转换为字符串(使用STR(A [1])),并且所有这些 串附加在一起。 “
这是我
def to_str(a):
for i in a: a.append([i])
return str(a[i])
我不知道如何使用STR(A [1]),我想知道,如果有人可以点我到正确的方向
从文档:
STR(对象) - >字符串
返回一个不错的字符串表示的对象。如果参数是 一个字符串,则返回值是同一个对象。
所以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
这有点低效率的,但它有效地做同样的事情。
的满足所有任务的标准代码相当类似:
def to_str(a):
return reduce(lambda x, y: x + str(y), a, '')
其中在提到的方式究竟件事情:首先将它们转换为字符串,然后添加到由已处理元素构成的字符串中(开头只是emty字符串)。
编辑:更清晰(和Python 3支持)的方式是使用显式循环通过元素。它不完全一样,同时阐明了如何减少()的工作原理:
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
最简单的方法是:
[str(i) for i in a]
如果你想有一个函数:
def to_str(a):
return [str(i) for i in a]
解决了问题的第一部分,而不是“将所有这些字符串附加在一起”部分。 – dusan
每个元素转换成字符串是最容易使用列表理解:
[ 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
我认为循环遍历'a'本身的元素更清晰,而不是循环遍历索引。 – DSM
@DSM我也是,太糟糕了,这是作业的一部分。我也在我的回答中加了这个。 –
非常感谢!它清除了我很多疑问。 – user1692517