让我们来:
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
我正在寻找的结果是
r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
并不是
r = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
原文由 titus 发布,翻译遵循 CC BY-SA 4.0 许可协议
相当于耶拿的解决方案:
>>> l=[[1,2,3],[4,5,6],[7,8,9]]
>>> [list(i) for i in zip(*l)]
... [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
原文由 inspectorG4dget 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
蟒蛇 3:
蟒蛇2:
解释:
要了解发生了什么,我们需要知道两件事:
zip(*iterables)
这意味着zip
需要任意数量的参数,每个参数都必须是可迭代的。例如zip([1, 2], [3, 4], [5, 6])
。args
,f(*args)
will callf
such that each element inargs
is a separate positional argumentf
。itertools.zip_longest
如果嵌套列表的元素数量不相同(同质),则不会丢弃任何数据,而是填充较短的嵌套列表 然后将 它们压缩。回到问题的输入
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
,zip(*l)
将等同于zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
。剩下的只是确保结果是列表列表而不是元组列表。