如何在 python 3.10 中对二维对象列表进行分组?

How do I group a 2 dimensional list of objects in python 3.10?

我有一个 gif 列表。每个“gif”都是像这样设置的框架对象列表。

gifs = [ [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], ...]

我需要将它们排序到一个列表列表,其中每个子列表包含第 n 个对应的帧。即

orderedGifs = [ [1, 1, 1, ...], [2, 2, 2, ...], [3, 3, 3, ...], ...]

我该如何实现?

谢谢!

正如@enke 在评论中指出的那样,使用 list(zip(*gifs)) 可以获得换位 - 但它将是一个元组列表。

如果您需要将组列为列表,此方法有效:

orderedGifs = list(map(list, zip(*gifs)))

之所以有效,是因为:

  • *gifs 解压原始 gifs 并将其所有内容传递给 zip()(展开)
  • zip() 将传递的每个可迭代对象中的元组中的元素配对,在您的情况下是每个列表的第一个元素,然后是第二个元素,依此类推。
  • map(list, xs)xs 中获取每个元素并将 list() 应用于它,返回结果的可迭代

因此,将整个内容包装在 list() 中会将元组转换为列表,并根据需要将它们放入列表中。