мне нужно подражать izip_longest
из itertools
в Python 2,4Что я мог бы использовать вместо следующего() в Python 2.4
import itertools
class Tools:
@staticmethod
def izip_longest(*args, **kwds):
# izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
fillvalue = kwds.get('fillvalue')
counter = [len(args) - 1]
def sentinel():
if not counter[0]:
raise ZipExhausted
counter[0] -= 1
yield fillvalue
fillers = itertools.repeat(fillvalue)
iterators = [itertools.chain(it, sentinel(), fillers) for it in args]
try:
while iterators:
yield tuple(map(next, iterators))
except ZipExhausted:
pass
class ZipExhausted(Exception):
pass
Все работает отлично, пока я не достигну yield tuple(map(next, iterators))
; Python 2.4 бросает ошибку
NameError: global name 'next' is not defined
и завершает работу.
Что я могу использовать вместо next
, чтобы сделать izip_longest
работать в Python 2.4?
Или есть ли другая функция в Python 2.4, которая возвращает тот же результат, что и izip_longest()
?
Из любопытства, почему вы используете класс с статический метод? Почему бы просто не сделать эту функцию? –
Немного связанный (не совсем дубликат): http://stackoverflow.com/q/25810855/1639625 –