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方法等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值