相关疑难解决方法(0)

为什么表达式0 <0 == 0在Python中返回False?

在Python 2.6中查看Queue.py,我发现这个构造我发现有点奇怪:

def full(self):
    """Return True if the queue is full, False otherwise
    (not reliable!)."""
    self.mutex.acquire()
    n = 0 < self.maxsize == self._qsize()
    self.mutex.release()
    return n
Run Code Online (Sandbox Code Playgroud)

如果maxsize为0,则队列永远不会满.

我的问题是它如何适用于这种情况?如何0 < 0 == 0被认为是假的?

>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Run Code Online (Sandbox Code Playgroud)

python

133
推荐指数
5
解决办法
6748
查看次数

为什么[False]中的False == False返回True?

我的一位大四学生证明了这一点,我想知道这是一个缺陷,还是有一些优先级和操作员关联性的东西证明了这一点.

>>> False==False in [False]
True
Run Code Online (Sandbox Code Playgroud)

python

14
推荐指数
1
解决办法
2021
查看次数

一个表达式如何与父母一样不同?

请考虑以下声明:

> False == False in [False]
True
Run Code Online (Sandbox Code Playgroud)

然而:

> (False == False) in [False]
False
> False == (False in [False])
False
Run Code Online (Sandbox Code Playgroud)

不可思议.是什么原因和解释?

python python-3.x

6
推荐指数
1
解决办法
63
查看次数

为什么python“in”语句以这种方式评估?

抱歉,我想不出更具描述性的标题。这不是非常重要,而是我发现的python 3.8(至少)中的一个奇怪的怪癖,我想我不可能是唯一注意到这一点的人,并且可能有一个合理的解释:

>>> 'foo' in 'foobar' == True
False
Run Code Online (Sandbox Code Playgroud)

它也以另一种方式工作:

>>> True == 'foo' in 'foobar'
False
Run Code Online (Sandbox Code Playgroud)

但是,从逻辑上讲,我认为这应该是 True,因为

>>> 'foo' in 'foobar'
True
>>> True == True
True
Run Code Online (Sandbox Code Playgroud)

我假设这是某种操作顺序错误,但是当我尝试对其进行分组时,我得到

>>> ('foo' in 'foobar') == True
True
>>> 'foo' in ('foobar' == True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
Run Code Online (Sandbox Code Playgroud)

在这一点上,我主要只是很好奇,如果有人能解释这一点,那就太好了!

python logical-operators python-3.x

6
推荐指数
1
解决办法
60
查看次数

Python:在[] == False中打印"word"

在这里有点精神,试图找出它在python中的作用:

print "word" in [] == False
Run Code Online (Sandbox Code Playgroud)

为什么打印False

python

4
推荐指数
1
解决办法
260
查看次数

检查列表中是否存在项目时,为什么此代码不起作用 - 如果列表中的项目== False:

考虑这个清单:

list = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我想检查此列表中是否不存在数字9.有两种方法可以做到这一点.

方法1:此方法有效!

if not 9 in list: print "9 is not present in list"
Run Code Online (Sandbox Code Playgroud)

方法2:此方法不起作用.

if 9 in list == False: print "9 is not present in list"
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么方法2不起作用?

python

4
推荐指数
1
解决办法
3万
查看次数

Why does this boolean expression evaluate to False?

Can someone explain to me why the Python interpreter evaluates this expression to be False?

1 in [1] == True
Run Code Online (Sandbox Code Playgroud)

I would expect that 1 in [1] would evaluate to True, and obviously True == True would be True. However this isn't what happens - the expression is False. Why does this happen?

python

4
推荐指数
1
解决办法
71
查看次数

这个表达式是如何计算的?“foo”中的“f”== True

>>> "f" in "foo"
True
>>> "f" in "foo" == True
False
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么第二个表达式是 False。我看到==优先级高于in. 但随后我希望得到一个异常,这就是当我添加括号时会发生的情况:

>>> "f" in ("foo" == True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
Run Code Online (Sandbox Code Playgroud)

foo似乎只有当位于 两侧时,表达式才为 True ==,如下所示:

>>> "f" in "foo" == "foo"
True
>>> "f" in "foo" == "bar"
False
Run Code Online (Sandbox Code Playgroud)

我缺少什么?Python 在这里实际计算什么?

python operator-precedence

3
推荐指数
1
解决办法
58
查看次数

“in”运算符的优先级是什么?

今天我在这个Python程序中遇到了一个困难的情况:

a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是

a = [False, True]
x = True in a in a
y = True in a in [a]
z = True in a in (a)
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

让我们在x这里测试:

x = True in a in a
Run Code Online (Sandbox Code Playgroud)

True in [False, True]True,又True in [False, True] …

python boolean-logic operators python-3.x

-1
推荐指数
1
解决办法
75
查看次数