gpt4 book ai didi

python - 可以考虑用作逻辑值的列表不会在 Python 中转换为 True/False 吗?

转载 作者:行者123 更新时间:2023-12-04 02:33:06 24 4
gpt4 key购买 nike

我正在学习 Peter Norvig 的一个程序,他是著名的 AI 书籍,found here他使用这种结构:

def candidates(word): 
"Generate possible spelling corrections for word."
return (known([word]) or known(edits1(word)) or known(edits2(word)) or [word])

我明白它是如何工作的。为了其他读者,我在这里解释一下。

函数 knownedits1edits2 返回可以为空的列表。

代码使用这些列表的真值来找到第一个计算结果为 True 的列表。由于 Python 将表达式短路,这就是答案。

但是,为了使这个表达式起作用,操作数必须用作返回值,即列表将在收到时保留,而不是转换为 TrueFalse 解释逻辑表达式时。

另一种使用海象的方法是:

  if a:=known([word]):
return a
elif b:=know(edits1(word)): #fixed elsif type on edit
return b
elif c:=know(edits2(word)): #fixed elsif type on edit
return c
else:
return [word]

我有两个问题:

  1. 假设返回值将是操作数的原始值,而不是它的真值,这是任何 Python 解释器预期的正确行为吗?
  2. 这是 Pythonic 风格吗?

最佳答案

为了扩展我的评论,python 允许您根据容器的“真实性”概念进行操作。对于内置容器,这默认为它们是否为空。所以 [](一个空列表)是 falsey,但它不是 False。您可以直接测试这些东西:

Python 3.8.0 (v3.8.0:fa919fdf25, Oct 14 2019, 10:23:27) 
>>> if []: print('Nope!')
...
>>> if [] == False: print('Nope!')
...
>>> if [] is False: print('Nope!')
...
>>> if ['a']: print('Yep!')
...
Yep!
>>>

关于python - 可以考虑用作逻辑值的列表不会在 Python 中转换为 True/False 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63062112/

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