使用生成器以及递归实现二维乃至多维列表转换成一维列表(python实现)

举报
孤寒者 发表于 2021/08/09 23:42:17 2021/08/09
【摘要】 使用生成器以及递归实现二维乃至多维列表转换成一维列表(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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。