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** 遍历列表并将每个元组转换为列表。您也可以使用循环来执行相同的操作。试试看。
结论
如果您在本教程中有任何疑问,请在评论部分中提及。
广告