在我最近从2迁移到3的Python代码中
list(reversed(zip(*positions)))
会产生错误
TypeError:“ zip”对象不可逆
我可以通过将有问题的代码更改为
来解决此问题list(reversed(list(zip(*positions))))
但这似乎是错误的解决方法。
在Python 3中反转zip
的正确方法是什么?
答案 0 :(得分:0)
reversed
用于在列表上进行迭代。它不是故意创建列表,因为它通常仅用于向后迭代元素,而不是创建列表。
这就是为什么必须在其上使用list
来创建list
的原因。而且它需要一个能够直接到达最后一个元素的序列,因此您必须在python 3中执行list(zip())
。
也许您可以缩短
list(reversed(list(zip(*positions))))
到
list(zip(*positions))[::-1]
它无需list
即可直接创建一个reverse
,因此它的速度可能也会稍快一些。