迁移到Python 3时,如何避免出现“'zip'对象不可逆”错误?

时间:2019-03-20 20:15:09

标签: python-3.x python-2.7 migration

在我最近从2迁移到3的Python代码中

list(reversed(zip(*positions)))

会产生错误

  

TypeError:“ zip”对象不可逆

我可以通过将有问题的代码更改为

来解决此问题
list(reversed(list(zip(*positions))))

但这似乎是错误的解决方法。

在Python 3中反转zip的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

reversed用于在列表上进行迭代。它不是故意创建列表,因为它通常仅用于向后迭代元素,而不是创建列表。

这就是为什么必须在其上使用list来创建list的原因。而且它需要一个能够直接到达最后一个元素的序列,因此您必须在python 3中执行list(zip())

也许您可以缩短

list(reversed(list(zip(*positions))))

list(zip(*positions))[::-1]

它无需list即可直接创建一个reverse,因此它的速度可能也会稍快一些。