内容简介:前面我们get到了一个技能,生成器。那么如果我们想依次输出一个数组,但是数组中又嵌套数组,又嵌套数组...嵌套未知层,那么如何实现?如果使用for可能就有点不方便了,这时我们需要递归。我们可以这样做,
前面我们get到了一个技能,生成器。
那么如果我们想依次输出一个数组,但是数组中又嵌套数组,又嵌套数组...嵌套未知层,那么如何实现?如果使用for可能就有点不方便了,这时我们需要递归。
我们可以这样做,
def myFlatten(seq): try: for list in seq: for item in myFlatten(list): yield item except Exception: yield seq
测试我们的代码
seque=[[1,[2,[3]]],[4,[5,[6,[7,[8]]]]],[9,10],[11]] for item in myFlatten(seque): print(item)
输出
print(list(myFlatten(seque)))
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
对于上述实现方式,我们发现并不完善,如果数组是字符串那就可能引发typeError异常。于是我们增加一个检查的逻辑。
def myFlattenAdvance(seq): try: try: seq+'' except TypeError: pass else:raise TypeError for list in seq: for item in myFlattenAdvance(list): yield item except Exception: yield seq
发现类型错误,则在异常中处理,本段代码中,我们不做异常处理。
测试调用如下,
strSeq=['魔礼青',['魔礼海',['魔礼红','魔礼寿']]] for item in myFlattenAdvance(strSeq): print(item)
输出
魔礼青 魔礼海 魔礼红 魔礼寿
print(list(myFlattenAdvance(strSeq)))
输出
['魔礼青', '魔礼海', '魔礼红', '魔礼寿']
这样我们可以递归字符串类型的数组了。
工程文件下载: https://download.csdn.net/download/yysyangyangyangshan/10821963
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
京东平台运营攻略(全彩)
京东商学院 / 电子工业出版社 / 2015-5 / 69.00元
2014 年年末,京东POP 开放平台的入驻商家已超过6 万,京东平台被广泛关注和认可的同时,在电商江湖中仍颇具神秘色彩。面对碎片化的信息,京东的店铺经营者及希望入驻京东的准商家们,对于在京东如何利用丰富的各类平台资源,搭建并运营京东店铺,一直很难找到全面而系统的资料。 《京东平台运营攻略(全彩)》由京东官方出品,动员了京东内部涉及第三方店铺业务线的众多部门,由多位业务精英参与撰写,保证了内......一起来看看 《京东平台运营攻略(全彩)》 这本书的介绍吧!