【发布时间】: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