如何在 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()
中会将元组转换为列表,并根据需要将它们放入列表中。
我有一个 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()
中会将元组转换为列表,并根据需要将它们放入列表中。