在 Python 中加入列表列表

在 Python 中加入列表的列表

Join a list of lists in Python

要加入 Python 中的列表列表:

  1. 声明一个新变量并将其设置为一个空列表。
  2. 使用for循环遍历二维列表。
  3. 使用嵌套for循环遍历每个嵌套列表。
  4. 将每个项目附加到空列表。
主程序
my_2d_list = [['a', 'b'], ['c', 'd'], ['e', 'f']] flat_list = [] for l in my_2d_list: for item in l: flat_list.append(item) # 👇️ ['a', 'b', 'c', 'd', 'e', 'f'] print(flat_list)

我们使用嵌套for循环来连接列表列表。

for循环用于迭代二维列表。

为了访问嵌套列表中的项目,我们需要一个嵌套循环。 for

在每次迭代中,我们将每个列表项附加到一个空列表中。

如果您有一个 3D 列表,您可以将此方法与一个更多的嵌套循环一起使用。

您可以使用列表理解来获得相同的结果。

主程序
my_2d_list = [['a', 'b'], ['c', 'd'], ['e', 'f']] flat_list = [item for l in my_2d_list for item in l] # 👇️ ['a', 'b', 'c', 'd', 'e', 'f'] print(flat_list)

列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。

示例中的列表理解与我们使用的循环非常相似for ,但语法更难阅读。

我们仍然有 2 个for循环,但不是将嵌套列表的项目附加到空列表,而是简单地从列表推导中返回它们。

或者,您可以使用该itertools.chain.from_iterable方法。

使用该itertools.chain.from_iterable()方法加入列表列表,例如
list(itertools.chain.from_iterable(my_2d_list))该方法在幕后使用嵌套的 for 循环,并将列表列表连接到一个平面列表中。

主程序
import itertools my_2d_list = [['a', 'b'], ['c', 'd'], ['e', 'f']] flat_list = list(itertools.chain.from_iterable(my_2d_list)) # 👇️ ['a', 'b', 'c', 'd', 'e', 'f'] print(flat_list)

itertools.chain.from_iterable
方法可用于实现相同的结果

该方法大致等同于以下函数。

主程序
def from_iterable(iterables): for it in iterables: for element in it: yield element

要考虑的另一种选择是使用内置sum()函数。

要加入列表列表:

  1. 将二维列表和一个空列表传递给sum()函数。
  2. sum函数将对列表的元素求和,并使用空列表作为start值。
  3. 结果是一个包含项目的平面列表。
主程序
my_2d_list = [['a', 'b'], ['c', 'd'], ['e', 'f']] flat_list = sum(my_2d_list, []) # 👇️ ['a', 'b', 'c', 'd', 'e', 'f'] print(flat_list)

sum函数接受一个可迭代对象和一个start参数,从左到右对它们求和并返回总数

当我们对两个列表求和时,我们得到一个包含两个列表中的项目的列表。

主程序
# 👇️ ['a', 'b', 'c', 'd'] print(['a', 'b'] + ['c', 'd']) # 👇️ [1, 2, 3, 4] print([1, 2] + [3, 4])

默认情况下,该start参数设置为0,因此我们必须显式传递一个空列表。

请注意,这种方法比使用嵌套for循环或itertools.chain.from_iterable方法效率低一些。

发表评论