前一段去云英面试,技术官很”不厚道“了问了一个非常简单的问题:如何将多维列表转化了一维的?当时虽然想到了使用迭代或者列表生成式可以做到,但是可以没能可行的代码,回来后一顿后悔。
对于规范的且嵌套维度较低的多维列表,python中有很多方法可以实现:
a=[[1,2],[3,4],[5,6]] print [j for i in li for j in i] #or from itertools import chain print list(chain(*a)) #or import itertools a = [[1,2,3],[4,5,6], [7], [8,9]] out = list(itertools.chain.from_iterable(a)) #or a=[[1,2],[3,4],[5,6]] t=[] [t.extend(i) for i in a] print t #or a=[[1,2],[3,4],[5,6]] print sum(a,[]) #or reduce(lambda x, y: x+ y, a)
对于复杂的多维嵌套列表就需要使用一些复杂的方法:
#递归的方法比较容易理解 def expand_list(nested_list): for item in nested_list: if isinstance(item, (list, tuple)): for sub_item in expand_list(item): yield sub_item else: yield item #在stackoverflow看到大牛的列表生成式版本 func = lambda x: [y for l in x for y in func(l)] if type(x) is list else [x] #生成式的方法还有很多,可以自行摸索
对于使用python2.X的童鞋,还可以使用flatten函数来做:
>>> d=[1,2,3,[4,5],[6,7,[8,9]]] >>>from compiler.ast import flatten >>>flatten(a) [1, 2, 3, 4, 5, 6,7,8,9]
其实上边列举的方法仅仅是冰山一角,大海下的冰山就等这童鞋们自行去寻找挖掘了。
以上这篇Python嵌套列表转一维的方法(压平嵌套列表)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
问题内容: 谁能告诉我如何在嵌套列表中调用索引? 通常我只写: 但是如果我有一个带有嵌套列表的列表,如下所示: 我想分别浏览每个索引? 问题答案: 如果您确实需要索引,则可以按照内部列表再次执行以下操作: 但是遍历列表本身是更pythonic的: 如果您确实需要索引,也可以使用:
问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数
问题内容: 我在bleow显示的代码中使用嵌套列表在Python中遇到了一些问题。 基本上,我有一个包含所有0值的2D列表,我想循环更新列表值。 但是,Python不会产生我想要的结果。我对range()Python列表索引有误解吗? 我预期的结果是: 但是Python的实际结果是: 这里发生了什么? 问题答案: 问题是由于python选择通过引用传递列表这一事实引起的。 通常,变量是按“值”传递
问题内容: python初学者在这里。 我有2个要合并的嵌套列表: 我正在寻找的输出是: 可以在没有任何外部库的情况下完成此操作吗?注意:len(list1)= len(list2) 问题答案: 使用函数的功能并列出理解:
本文向大家介绍Markdown 嵌套列表,包括了Markdown 嵌套列表的使用技巧和注意事项,需要的朋友参考一下 示例 列表可以嵌套 八个空间 十二个空格 四个空间 然后回来
问题内容: 我有这个嵌套列表: 现在,我要做的是将列表中的每个元素转换为float。我的解决方案是这样的: 但这可以使用嵌套列表理解来完成吗? 我所做的是: 但是结果是一堆100的总数为2400。 任何解决方案,解释将不胜感激。谢谢! 问题答案: 这是使用嵌套列表理解的方法: 这将为你提供一个列表列表,与你开始时的列表类似,只是使用浮点数而不是字符串。如果你想要一个固定列表,则可以使用。
问题内容: 我正在尝试将嵌套列表转换为2d数组。 我想把它做成一个。我尝试了以下方法: 有没有可行的方法?请注意,直到运行时我才知道列表的大小,并且列表可能会锯齿。 问题答案: 没有简单的内置方法可以执行所需的操作,因为您只能返回存储在list中的元素数组,在您的情况下也可以是list。 最简单的解决方案是创建二维数组,并用每个嵌套列表的结果填充它。 (如果您像使用Alex一样将Java8与流一起
问题内容: 我有一个嵌套列表,如何将其转换为字典 字典应阅读以下内容 我试图将其更改为Pandas DataFrame并将其转换为字典。但是我正在寻找从列表到字典的直接转换 将感谢您的帮助。在Python 3中期待答案 问题答案: 一种方法是使用,它依次遍历每个列表的第 i 个元素: 按照@Jean-FrançoisFabre的建议,通过打开包,可确保您的值是列表。 结果 另一种方法是使用: