【发布时间】:2019-10-05 19:10:00
【问题描述】:
我有以下 sn-p 代码来找出给定数字列表中的任何一对是否与给定总和匹配。
我实现的功能如下
def google(numbers, total):
complement =[]
for x in numbers:
if x in complement:
return True
else: complement.append(total-x)
return False
print google([1,2,3,4,5],8)
我的问题是,是否有任何可能的方式将其实现为生成器表达式。 ?
例如,有没有办法检查当前部分创建的生成器是否在理解中具有给定值?
【问题讨论】:
-
生成器和列表推导是两个不同的东西。你是什么意思?
-
如果仅仅因为事实理解没有办法像循环一样短路,它就不可能是等价的。您可以过滤,但这样做会很笨拙。
def google(numbers, total): return total in map(sum, combinations(numbers, r=2))怎么样? -
同意@ReutSharabani。对于那些不熟悉它的人,要使用
combinations(),因为@ReutSharabani 建议您首先需要包含from itertools import combinations这一行。 -
注意:它们是生成器表达式,而不是推导式。
标签: python python-2.7 generator list-comprehension