Python映射是否有更简单的构造(无,fcn())?

Python映射是否有更简单的构造(无,fcn())?,python,map,equivalent,Python,Map,Equivalent,Pythonmap()的文档部分说明: 如果函数为None,则假定标识函数 因此,如果我有一些类似这样的Python代码: def yearsback(tbl, yb): def fcn(): y = None i = 0 for (year, prefix, suffix) in reversed(sorted(tbl.iterkeys())): if y == None: y = year eli

Python
map()
的文档部分说明:

如果函数为
None
,则假定标识函数

因此,如果我有一些类似这样的Python代码:

def yearsback(tbl, yb):
    def fcn():
      y = None
      i = 0
      for (year, prefix, suffix) in reversed(sorted(tbl.iterkeys())):
        if y == None:
          y = year
        elif y > year:
          i, y = 1 + i, year
        if i >= yb:
          return
        yield (year, prefix, suffix)
    return map(None, fcn())

有没有更简单的方法来写?另外,我怀疑
反向(排序(tbl.iterkeys())
也可以简化。

您需要做的就是-

list(fcn())
如果需要迭代器,请使用-

iter(fcn())

你需要做的就是-

list(fcn())
如果需要迭代器,请使用-

iter(fcn())

视情况而定。什么是
fcn()
?为什么
returnlist(fcn())
do?@StoryTeller我已经添加了
fcn()
sorted(tbl.iterkeys(),reverse=True)
@chepner iterkeys()还没有排序出来呢?假设
tbl
是一本字典,那就不算了。什么是
fcn()
?为什么
returnlist(fcn())
do?@StoryTeller我添加了
fcn()
sorted(tbl.iterkeys(),reverse=True)
@chepner-The-iterkeys()还没有排序出来呢?假设
tbl
是一本字典,不。在这种情况下,我认为
iter
会是一个不可操作的,对吗?因为生成器已经是迭代器了?他已经更新了他的问题。我会留着它,以防将来它对任何人都有帮助。在这种情况下,我认为
iter
将是不可行的,对吗?因为生成器已经是迭代器了?他已经更新了他的问题。我会留下它,以防将来对任何人都有帮助。