如何从一个列表的列表中制作一个扁平的列表?
在上一篇文章中,我们已经讨论了一些扁平化列表的方法。因此,在我们继续了解这些方法之前,请参考本文的第一部分。
我们将在本文中讨论的方法主要是使用库和内置的函数
-
使用functools(reduce()和iconcat())。
-
使用itertools (chain())
-
使用numpy(concatenate()和flat())。
-
使用sum()
就像上一篇文章一样,我们用同样的列表 List 作为例子,这是一个具有以下元素的列表,并有一个名为 flat_list 的空列表 ,我们在这里存储最终的扁平化列表。

使用functools(reduce()和iconcat())。
我们导入库、 functools 和 operator 来实现这个方法。基本的语法是。
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.