在 Python 中展平列表和列表列表的指南

将二维数组转换为一维数组称为展平。 有很多方法可以解决这个问题。

我们将在本教程中探索其中的一些。

让我们看一个例子。

输入

[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#1。 循环

解决该问题的最常见方法是使用循环。 我想你们中的大多数人已经明白了。 让我们看看使用循环解决问题的步骤。

  • 使用虚拟数据初始化列表列表并将其命名为数据。
  • 现在,初始化一个名为 flat_list 的空列表。
  • 遍历数据。
    • 从当前列表中解压所有元素。
    • 使用 list append 方法将它们添加到 flat_list。
  • 打印结果。

请参阅下面问题的代码。

# initializing the data and an empty list
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

# iterating over the data
for item in data:
    # appending elements to the flat_list
    flat_list += item

# printing the resultantn flat_list
print(flat_list)

您可以使用另一个循环将子列表元素添加到 flat_list 而不是连接运算符。 我们还可以使用列表理解而不是循环。

  面向初学者的 Docker 架构及其组件

两者做同样的工作。 让我们看看下一个解决问题的方法。

#2。 Itertools——链

我们将使用 itertools 内置模块中称为 chain 的方法。

方法链遍历每个子列表并返回元素,直到其中没有子列表。 它返回一个可迭代对象,我们必须将其转换为列表。

让我们看看解决问题所涉及的步骤。

  • 使用虚拟数据初始化列表列表并将其命名为数据。
  • 使用 itertools.chain(*data) 获取展平的可迭代对象。
  • 将生成的可迭代对象转换为列表。
  • 打印展平列表。

您可以浏览以下代码段中的代码。

# importing the module
import itertools

# initializing the data
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

# flattening the list and storing the result
flat_list = itertools.chain(*data)

# converting iterable to list and printing
print(list(flat_list))

#3。 展平多级列表

我们已经了解了如何展平列表的列表。 上面我们讨论的扁平化列表的方法不适用于多级列表。 让我们看一个例子。

输入

[1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9]

由于我们在程序之前不知道列表的深度,因此我们必须使用递归来解决问题。

  • 如示例所示初始化数据并将其命名为数据。
  • 初始化一个名为 flat_list 的空列表。
  • 编写一个名为 flatten_list 的函数。
    • 遍历给定列表的元素。
    • 如果元素是列表,则递归地再次调用相同的函数。
    • 如果该元素不是列表,则将该元素附加到 flat_list。
  • 使用数据调用函数。
  • 该函数将填充 flat_list 列表中的所有元素。
  • 打印 flat_list 以检查输出。
  如何在工作中使用动机理论

呸! 很多代码步骤。 不用担心。 将上述语句转换为代码不会超过几分钟。

# initializing the data and empty list
data = [1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
flat_list = []

# function
def flatten_list(data):
    # iterating over the data
    for element in data:
        # checking for list
        if type(element) == list:
            # calling the same function with current element as new argument
            flatten_list(element)
        else:
            flat_list.append(element)

# flattening the given list
flatten_list(data)

# printing the flat_list
print(flat_list)

请记住,我们没有转换现有列表。 相反,我们使用给定的列表元素创建了一个新列表。

结论

希望您喜欢本教程。 可能有许多其他方法可以在 Python 中展平列表,但我觉得以上可能是最简单的方法。

快乐编码🙂