Python 多列表中相同索引处的元素分组


在本教程中,我们将编写一个程序,将来自不同列表的相同索引处的元素组合到一个列表中。这里有一个限制条件。所有列表必须具有相同的长度。让我们看一个例子来更清楚地理解它。

输入

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

输出

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

我们可以用不同的方法解决它。让我们看看如何使用普通循环来解决。

  • 用列表初始化列表。
  • 初始化一个空列表。
  • 将变量 **index** 初始化为 0。
  • 迭代子列表长度次
    • 将一个空列表追加到上一个列表
    • 迭代列表长度次。
      • 将 **lists[current_index][index]** 追加到 **result[index]
  • 打印结果。

示例

 在线演示

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# empty list
result = []
# variable to 0
index = 0
# iterating over the sub_list length (3) times
for i in range(len(lists[0])):
   # appending an empty sub_list
   result.append([])
   # iterating lists length (3) times
   for j in range(len(lists)):
      # adding the element to the result
      result[index].append(lists[j][index])
# moving to the next index
index += 1
# printing the result
print(result)

输出

如果您运行以上代码,则将获得以下结果。

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

我们可以使用 **zip** 函数毫不费力地解决它。**zip** 函数为您提供了我们想要的元组中的所有索引元素。让我们看看代码。

示例

 在线演示

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# using the zip and printing it
print(list(zip(*lists)))

输出

如果您运行以上代码,则将获得以下结果。

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

我们可以通过遍历列表将元组转换为列表。它可以以不同的方式完成。我们将使用另一个名为 **map** 的函数将所有元组转换为列表。这是一行代码。

示例

 在线演示

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# using the zip and printing it
print(list(map(list, zip(*lists))))

输出

如果您运行以上代码,则将获得以下结果。

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

我们使用 **map** 遍历列表并将每个元组转换为列表。您也可以使用循环来执行相同的操作。试试看。

结论

如果您在本教程中有任何疑问,请在评论部分中提及。

更新于: 2020年7月6日

599 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告