def to_str(lst):
if len(lst) == 0:
return lst
count = 0
while count <= len(lst):
result = lst[count] + to_str(lst[1:])
count += 1
return result
这是我的代码,它似乎不起作用 输入是
to_str(['c', 's', 1, 0, 1, 0, 's'])
我想要得到一个字符串'cs1010s'
答案 0 :(得分:2)
您可以使用map()
将非字符串元素转换为str
和join()
以连接字符串序列:
def to_str(lst):
return ''.join(map(str, lst))
修改强>
由于您似乎希望使用 recursion 来解决此问题,因此使用迭代(while
循环)无意义(在本例中)。
您必须明确转发str
,因为列表中的某些元素为int
,您无法使用str
和int
连接+
:
def to_str(lst):
if len(lst) == 0:
return '' # if length is 0, return an empty string, so you can concatenate it
result = str(lst[0]) + to_str(lst[1:]) # concatenate first element with the result of to_str(the rest of the list)
return result
print to_str(['c', 's', 1, 0, 1, 0, 's'])
# cs1010s
答案 1 :(得分:1)
在连接之前,您应该将list元素转换为字符串。此外,当列表为空时,则返回空字符串,而不是空列表。
def to_str(lst):
if len(lst) == 0:
return '' # return empty string
count = 0
while count <= len(lst):
# convert lst[count] to string before concatenating
result = str(lst[count]) + to_str(lst[1:])
count += 1
return result
但是,你的函数中有很多不必要的代码。你应该把它写成
def to_str(lst):
if not lst:
return ''
return str(lst[0]) + to_str(lst[1:])