range()オブジェクトとジェネレータの違いについて調べた。 def enum_from_to(begin, end): i = begin while i < end: yield i i += 1 まず、rangeの機能を限定したようなジェネレータを定義する。 print (list(zip(enum_from_to(0, 10), enum_from_to(0, 10)))) # => [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9)] 同じ中身を持つジェネレータをzipすると上のようになる。 L = enum_from_to(0, 10) print (list(zip(L, L))) # => [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9