【发布时间】:2019-11-07 20:00:35
【问题描述】:
我有 generator cut_slices 并使用 for loop。但是我需要对循环外的第一个和 last 产生元素做一些具体的工作。首先很简单,只需在循环前使用next()。但是最后一个呢?
fu_a = self.cut_slices(unit, unit_size) #generator (simple for loop with some calculations and yield)
header = self.make_header(p=0, first_byte=unit[0], rtp_type=rtp_type, flag='s')
self.send_packet(header + next(fu_a))
for i in fu_a: #if there is an analogue of a[:-1] for generator object?
header = self.make_header(p=0, first_byte=unit[0], rtp_type=rtp_type,
flag='m')
self.send_packet(header + i)
header = self.make_header(p=0, first_byte=unit[0], rtp_type=rtp_type, flag='e')
self.send_packet(header + next(fu_a))
附:我知道还有其他方法可以达到相同的结果,只是想弄清楚。
【问题讨论】:
-
如果你把每个元素放在一个变量中,这样变量总是只有最后一个生成的,当循环结束时,...
-
您可以跟踪每次迭代的最后一项,因此,在下一次迭代之前,用当前项更新最后一项。
-
检查 this so question 从 Python 迭代器获取最后一项的最干净方法