python将任意深度列表中的所有内容转化为一个字符串,递归实现

任意层列表的内容转化为一个字符串(PyQt的列表无法打印问题)

1 功能背景

在很多python编辑器中,print()函数可以打印很多内部数据结构,比如列表[…],字符串“string”,数字123,集合、映射{…},元组(…),dataframe,numpy.array()等等,其中列表的打印最为常见。但是在有些情况下,一些输出类型的函数只能接受str对象进行输出,最典型的例子就是PyQt中的.settext()类型的函数,因此需要将list的内容转化为一个字符串进行输出。

问题:

列表1:[“11326fweg”, “affse6546a”, “aoffijaojjaj哈哈哈”]
列表2:[“example1affffgg”, [“awggeag”, “faewgerhj”, “age4g”], [“faef”, “awfwe”], “awefweeasf”]
列表3:[[[[[“egfergrgg”, “aewfhjty548s”]], [“awegewg”, “aseefg5496”]]]]

将上述任意列表里的内容都可以转化为一个字符串,中间用\n隔开

2 程序实现

# 输入想要转化的列表
def list_2_string(unknown_level_list):
    res = ""
    for eve in unknown_level_list:
        if type(eve) == type("string"):
            res += eve + "\n"
        # 再加elif可以实现判断其他数据结构,供扩展,所以没用else
        elif type(eve) == type([]):  
            res += list_2_string(eve)  # 递归调用
    return res
    # 返回一个字符串的结果

上述的程序已经经过测试,可以顺利完成预期的功能。

3 实验结果

传入列表1的内容,输出结果:

"11326fweg\naffse6546a\naoffijaojjaj哈哈哈"

传入列表2的内容,输出结果:

"example1affffgg\nawggeag\nfaewgerhj\nage4g\nfaef\nawfwe\nawefweeasf"

传入列表3的内容,输出结果:

"egfergrgg\naewfhjty548s\nawegewg\naseefg5496"

通过将任意层深度的列表转化为一个字符串,可以在很多不能打印列表的地方实现列表内容的转化输出,比如PyQt4中的settext方法等。

你可能感兴趣的:(算法与数据结构)