【问题标题】:Generators v/s Returning a List - Python [closed]生成器v / s返回列表 - Python [关闭]
【发布时间】:2016-06-22 23:09:15
【问题描述】:

我正在用 Python 编写一个程序,它返回/检索给定列表中的所有相邻元素。于是我开发了两个函数:

将所有这些相邻值存储在一个列表中并返回该列表:

def ret_adj(data):
#adjs = []
visited = []
for i in data:

    if i in visited:
        #adjs.append(i)
        yield i
    else:
        visited.append(i)
    if data[data.index(i)+1] != i:
        del visited[:]

#return adjs

还有一个产生值的:

    if i in visited:
        #adjs.append(i)
        yield i
    else:
        visited.append(i)
    if data[data.index(i)+1] != i:
        del visited[:]

所以我的问题基本上是,哪种方法更有效?将所有值作为列表返回,还是生成它们?

【问题讨论】:

  • 这些方法似乎都没有使用return
  • 你使用visited = []的方式确实应该使用set

标签: performance list python-3.x generator


【解决方案1】:

通常情况下,generator 会更高效,尤其是对于大型数据集。

另一方面,如果您通常处理数据的方法是立即将generator 转换为list,那么您最好首先返回列表。

【讨论】:

    猜你喜欢
    • 2017-06-10
    • 2023-03-25
    • 2016-01-22
    • 1970-01-01
    • 2015-06-04
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多