gpt4 book ai didi

python - 带有值检查的生成器表达式

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:34 24 4
gpt4 key购买 nike

我有以下代码片段来找出给定数字列表中的任何一对是否与给定总和匹配。

我实现的功能如下

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)

我的问题是,是否有任何可能的方法将其实现为生成器表达式。 ?

例如,有没有一种方法可以检查当前部分创建的生成器是否在理解范围内具有给定值?

最佳答案

如果你真的想这样做,一切皆有可能,但并非所有事情都是可取的:

from itertools import combinations, dropwhile

def google(numbers, total):
return bool(next(dropwhile(lambda c: sum(c) != total, combinations(numbers, 2)), False))

我们使用 combinations 遍历 numbers 的所有可能的 2 数字组合,并将它们与 total 进行比较。

使用 dropwhile,我们可以模拟原始代码的短路行为,仅获取满足条件的第一个组合(如果存在)。然后,它将作为非空 元组 转换为 bool 文字 True。否则,next 将看到 dropwhile 为空,并返回默认值 False

测试:

print(google([1, 2, 3, 4, 5], 8))
print(google([1, 2, 3, 4], 8))

输出:

True
False

关于python - 带有值检查的生成器表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56203567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com