本博文源于python基础,主要探讨递归生成式的妙用。嵌套列表在python描述树形结构时经常用到,做到对嵌套列表遍历是一件存在方法技巧的事情,因此我们今天就来实现一二。
实验结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200707181105702.png)
实验代码
最重要双for循环中内循环调用本身基线递归
def flattern(nested):
try:
for sublist in nested:
for elememt in flattern(sublist):
yield elememt
except TypeError:
yield nested
if __name__ == '__main__':
lst1 = [[[1],2],3,4,5,[6,[7]],8]
print("原始列表.....")
print(lst1)
print('嵌套遍历之后.....')
lst2 = list(flattern(lst1))
print(lst2)
上面的效果是适应与数字版本,但如果遇到字符呢,读过上面源码的小伙伴知道,这绝对崩了,比如 已经泛红一片 为了处理这个,修改代码,增加异常处理即可。
最终代码
def flattern(nested):
result = []
try:
try:nested + ''
except TypeError:pass
else: raise TypeError
for sublist in nested:
for elememt in flattern(sublist):
yield elememt
except TypeError:
yield nested
if __name__ == '__main__':
lst1 = [[["dfasfa"],2],3,4,5,[6,[7]],8]
print("原始列表.....")
print(lst1)
print('嵌套遍历之后.....')
lst2 = list(flattern(lst1))
print(lst2)
最终效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020070718195985.png)
|