使用生成器以及递归实现二维乃至多维列表转换成一维列表(python实现)
【摘要】 使用生成器以及递归实现二维乃至多维列表转换成一维列表(python实现)
第一题:
将任意一个二维列表转为一维列表:
a = [[1,2,3,4],[6,8,9,6]]
def fun1(a):
for i in a:
for j in i:
yield j
print(list(fun1(a)))
既然可以利用生成器实现将任意二维列表转换为一维列表的功能;
那么,考虑结合递归利用生成器实现任意多维列表转换为一维列表:
第二题:
将任意多维列表转换为一维列表:
b = [1,2,34,[3,1,54,[1223,432,[3,6,2]]],[3,5,2,[3,4,2]],[1,2,3]]
def fun2(b):
try:
for i in b:
for j in fun2(i):
yield j
except TypeError:
yield b
print(list(fun2(b)))
什么是生成器?
在Python中,一边循环一边计算的机制,称为生成器:generator。
什么是迭代?
迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。
Python中列表简介:
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字——它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)