在 Python 中将一个列表列表转换为两个列表

在 Python 中将一个列表列表转换为两个列表

Convert a list of lists to two lists in Python

将列表的列表转换为两个列表:

  1. 使用zip()带有*运算符的函数来解压缩列表。
  2. 使用该map()函数将zip对象中的元组转换为列表。
  3. 使用list()该类将map对象转换为列表。
主程序
list_of_lists = [[1, 2], [3, 4], [5, 6]] result = list(map(list, zip(*list_of_lists))) # 👇️ [[1, 3, 5], [2, 4, 6]] print(result) first, second = result print(first) # 👉️ [1, 3, 5] print(second) # 👉️ [2, 4, 6]

第一步是使用zip()带有*(iterable unpacking) 运算符的函数来解压缩列表。

主程序
list_of_lists = [[1, 2], [3, 4], [5, 6]] result = list(zip(*list_of_lists)) # 👇️ [(1, 3, 5), (2, 4, 6)] print(result)

zip函数并行迭代多个可迭代对象,并生成元组,其中每个可迭代对象都有一个项目

zip函数返回元组的迭代器。

我们使用该map()函数将迭代器中的元组转换为列表。

主程序
list_of_lists = [[1, 2], [3, 4], [5, 6]] result = list(map(list, zip(*list_of_lists))) # 👇️ [[1, 3, 5], [2, 4, 6]] print(result) first, second = result print(first) # 👉️ [1, 3, 5] print(second) # 👉️ [2, 4, 6]

map()函数将一个函数和一个可迭代对象作为参数,并使用可迭代对象的每个项目调用该函数。

我们只是将迭代器对象中的每个元组传递给list()类。

最后一步是将map对象传递给list()类。

您可以选择将列表值解压缩到变量中。

要考虑的替代方法是使用多个列表理解。

主程序
list_of_lists = [[1, 2], [3, 4], [5, 6]] a = [l[0] for l in list_of_lists] print(a) # 👉️ [1, 3, 5] b = [l[1] for l in list_of_lists] print(b) # 👉️ [2, 4, 6]

list在每次迭代中,我们访问特定索引处的当前嵌套对象并获得包含结果的列表。

或者,您可以使用列表理解来进行转换。

将列表的列表转换为两个列表:

  1. 使用zip()带有*运算符的函数来解压缩列表。
  2. 使用列表理解来迭代zip对象。
  3. 使用list()该类将每个元组转换为列表。
主程序
list_of_lists = [[1, 2], [3, 4], [5, 6]] result = [list(tup) for tup in zip(*list_of_lists)] print(result) # 👉️ [[1, 3, 5], [2, 4, 6]] first, second = result print(first) # 👉️ [1, 3, 5] print(second) # 👉️ [2, 4, 6]

我们使用列表理解而不是使用map()函数。

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

在每次迭代中,我们将当前元组传递给list()类以将其转换为列表。

您选择哪种方法是个人喜好的问题。我会选择列表理解,因为我发现它更直接、更容易阅读。

发表评论