我有:
>>> se = iter(map(lambda x: (x, x + 1), range(5)))
>>> print("{:d} {:d}".format(*(next(se))))
0 1
输出是预期的输出,但有更好的方法吗?对于例如以我得到的方式:
>>> print("{:d} {:d}".format(se))
0 1
答案 0 :(得分:1)
您可以使用generator expression代替map
+ lambda
:
>>> se = ((x, x+1) for x in range(5))
>>> next(se)
(0, 1)
>>> next(se)
(1, 2)
并且,您可以在格式字符串中使用索引:
>>> '{0[0]} {0[1]}'.format(next(se))
'0 1'
如果要迭代迭代器,可以使用for
语句和迭代器解压缩:
>>> se = ((x, x+1) for x in range(5))
>>> for a, b in se:
... print('{} {}'.format(a, b))
...
0 1
1 2
2 3
3 4
4 5