将列表转换为字符串

时间:2014-04-13 05:57:47

标签: python

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'

2 个答案:

答案 0 :(得分:2)

您可以使用map()将非字符串元素转换为strjoin()以连接字符串序列:

def to_str(lst):
    return ''.join(map(str, lst))

修改

由于您似乎希望使用 recursion 来解决此问题,因此使用迭代(while循环)无意义(在本例中)。

您必须明确转发str,因为列表中的某些元素为int,您无法使用strint连接+

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:])