Tim Chase wrote: > On 2016-03-06 19:29, Sven R. Kunze wrote: >> what's the reason that reversed(zip(...)) raises as a TypeError? >> >> Would allowing reversed to handle zip and related functions lead to >> strange errors? > > Peculiar, as this works in 2.x but falls over in 3.x: > > $ python > Python 2.7.9 (default, Mar 1 2015, 12:57:24) > [GCC 4.9.2] on linux2 > Type "help", "copyright", "credits" or "license" for more information. >>>> list(reversed(zip(range(10), range(20,100)))) > [(9, 29), (8, 28), (7, 27), (6, 26), (5, 25), (4, 24), (3, 23), (2, > 22), (1, 21), (0, 20)] > > $ python3 > Python 3.4.2 (default, Oct 8 2014, 10:45:20) > [GCC 4.9.1] on linux > Type "help", "copyright", "credits" or "license" for more information. >>>> list(reversed(zip(range(10), range(20,100)))) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: argument to reversed() must be a sequence > > > I'm not sure why reversed() doesn't think that the thing returned by > zip() isn't a sequence.
Because it isn't ;) [Python 3] >>> zip("abc") <zip object at 0x7f6186d27e48> >>> import collections >>> isinstance(z, collections.Sequence) False >>> isinstance(z, collections.Iterator) True zip() in Python 3 is what itertools.izip() used to be in Python 2. -- https://mail.python.org/mailman/listinfo/python-list