I have a script that I want to execute in both Python3.5 and IronPython2.7.
The script was originally written with Python3 in mind, so I have several nested loops similar to the following code:
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
Now, if I run this in IronPython2.7, I do not get the same result, because zip returns a list, not an iterator.
To get around this problem, I thought what I would do:
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
Is there a better way to do this?