从一个列表的列表中取出一个平面列表

110 阅读2分钟

如何从一个列表的列表中制作一个扁平的列表?

在上一篇文章中,我们已经讨论了一些扁平化列表的方法。因此,在我们继续了解这些方法之前,请参考本文的第一部分。

docs.google.com/document/d/…

我们将在本文中讨论的方法主要是使用库和内置的函数

  • 使用functools(reduce()和iconcat())。

  • 使用itertools (chain())

  • 使用numpy(concatenate()和flat())。

  • 使用sum()

就像上一篇文章一样,我们用同样的列表 List 作为例子,这是一个具有以下元素的列表,并有一个名为 flat_list 的空列表 ,我们在这里存储最终的扁平化列表。

使用functools(reduce()和iconcat())。

我们导入库、 functoolsoperator 来实现这个方法。基本的语法是。

functools.reduce(operator.iconcat, Original_List, [ ] )

iconcat() 函数执行 连接。这将被累积应用于列表 List的内部列表 ,从左到右开始,最后还原成一个单一的列表。

使用itertools (chain())。

这是这种扁平化过程的最理想的方式之一。我们导入 itertools 库来实现这种方法。这个库有各种函数。这些函数可以用来管理迭代器,这些迭代器可以轻松地遍历列表和字符串等可迭代的对象。这些迭代器的工作速度不如functools快,但比嵌套循环的工作效果好很多。这些迭代工具将连续的序列视为一个单一的序列,以连续的方式遍历作为参数的可迭代项。一般的语法是。

list( itertools.chain (*iterable))

使用numpy(concatenate()和flat())。

我们导入numpy包来实现这种方法。它提供了常见的操作,如对二维数组进行行和列的操作,如连接。其基本语法是

list( numpy.concatenate(List).flat )

这里的flat属性是用来获取数组上的一维迭代器。但这种方法相对较慢。

使用sum()。

在这种方法中,我们将内部列表相加。这个 sum() 函数需要两个参数:iterable和start。 iterable 是一个列表, start 是一个空列表,我们将在其中添加子列表。

sum( List, [ ] )

在这里我们不一定要导入任何库,但这种方法比itertools()和chain()函数慢,特别是当子列表的数量很大时。

The postA flat list out of alist of lists appeared first oni2tutorials.