python生成器将二维列表转换为一维列表

什么是生成器呢?
生成器与函数的定义方法类似,只是需要yield关键字处理每一个需要迭代的值(普通函数需要return返回值)。

def myGenerater():
    numlist = [1, 2, 3, 4, 5, 6, 7, 8]
    for num in numlist:
        yield num


for num in myGenerater():
    print(num, end=' ')

如何把一个二维列表转换为一维列表呢?

nestedlist = [[1, 2, 3], [4, 3, 2], [1, 2, 3, 5, 6, 9]]

def enumlist(nestedlist):
    for sublist in nestedlist:
        for element in sublist:
            yield element

for num in enumlist(nestedlist):
    print(num, end=' ')

问题又来了,如何将任意多维的列表转化成一维呢
这就需要用到递归

nestedlist = [4, [1, 2, [3, 6]], [4, [3, 2, 5, [9, 4]]], [1, 2, 3, 5, 6, 9]]

def enumlist(nestedlist):
    try:
        for sublist in nestedlist:
            for element in enumlist(sublist):  #递归
                yield element
    except TypeError:
        yield nestedlist  #如果是单个的值就迭代

for num in enumlist(nestedlist):
    print(num, end=' ')
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值