gpt4 book ai didi

python - 在 IronPython 2.7 和 Python3.5 中压缩

转载 作者:行者123 更新时间:2023-12-04 19:44:46 26 4
gpt4 key购买 nike

我有一个脚本,我想同时在 Python3.5 和 IronPython2.7 中执行。

该脚本最初是用 Python3 编写的,所以我有一些类似于以下代码的嵌套循环:

myIter0 = iter(['foo','foo','bar','foo','spam','spam'])
myIter1 = iter(['foo','bar','spam','foo','spam','bar'])
myIter2 = iter([1,2,3,4,5,6])

for a in myIter0:
for b, c in zip(myIter1, myIter2):
if a + b == 'foobar':
print(c)
break

现在,如果我在 IronPython2.7 中运行它,我不会得到相同的结果,因为 zip 返回一个列表而不是一个迭代器。

为了规避这个问题,我想我会这样做:
import sys
if sys.version_info.major == 2:
from itertools import izip as _zip
else:
_zip = zip

myIter0 = iter(['foo','foo','bar','foo','spam','spam'])
myIter1 = iter(['foo','bar','spam','foo','spam','bar'])
myIter2 = iter([1,2,3,4,5,6])

for a in myIter0:
for b, c in _zip(myIter1, myIter2):
if a + b == 'foobar':
print(c)
break

有没有更好的方法来做到这一点?

最佳答案

您可以使用 builtins 来自 future库。

from builtins import zip

在 python2 中你会得到一个 itertools.izip在 python3 中,你只需要 zip。
In [1]: from builtins import zip

In [2]: zip([1,2,3,4])
Out[2]: <itertools.izip at 0x7fa16c8496c8>

In [1]: from builtins import zip

In [2]: zip([1,2,3,4])
Out[2]: <zip at 0x7f13dfb9c188>

关于python - 在 IronPython 2.7 和 Python3.5 中压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com