相关疑难解决方法(0)

与两个谓词的Numpy链比较

在Numpy中,我可以像这样生成一个布尔数组:

>>> arr = np.array([1, 2, 1, 2, 3, 6, 9])
>>> arr > 2
array([False, False, False, False,  True,  True,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

有可能将比较链接在一起吗?例如:

>>> 6 > arr > 2
array([False, False, False, False,  True,  False,  False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

python arrays numpy boolean-expression scipy

11
推荐指数
2
解决办法
1460
查看次数

Python中的链式比较实际上如何工作?

Python的文件进行比较说:

比较可以任意链接,例如,x < y <= z等同于x < y and y <= z,除了y仅评估一次(但在两种情况下z都没有被评估,当x < y发现是假的时).

这些SO问题/答案对这种用法有了更多的了解:

所以像(人为的例子):

if 1 < input("Value:") < 10: print "Is greater than 1 and less than 10"
Run Code Online (Sandbox Code Playgroud)

只要求输入一次.这是有道理的.还有这个:

if 1 < input("Val1:") < 10 < input("Val2:") < 20: print "woo!"
Run Code Online (Sandbox Code Playgroud)

只询问Val2 是否 Val1介于1和10之间,只打印"呜!" 如果 Val2也是10到20之间(证明它们可以'任意链接').这也是有道理的.

但我仍然很好奇这是如何在词法分析器/解析器/编译器(或其他)级别实际实现/解释的.

上面的第一个例子基本上是这样实现的:

x = input("Value:")
1 < x and x < 10: …
Run Code Online (Sandbox Code Playgroud)

python comparison-operators python-internals

9
推荐指数
1
解决办法
533
查看次数

比较运算符和'是' - python中的运算符优先级?

所以我在网上看了一些代码,我遇到了一条线(在第286行):
if depth > 0 and best <= -MATE_VALUE is None and nullscore > -MATE_VALUE:

我理解困难的部分是best <= -MATE_VALUE is None.

所以我解雇了翻译,看看如何value1 > value2 is value3工作等陈述.
所以我试过了

>>> 5 > 2 is True
False

>>> (5 > 2) is True 
True

>>> 5 > (2 is True) 
True
Run Code Online (Sandbox Code Playgroud)


我的问题

为什么5 > 2 is TrueTrue呢?这些东西通常如何运作?

谢谢.

python python-3.x

9
推荐指数
1
解决办法
284
查看次数

在Python 3中,x在范围(...)== y中的含义是什么?

我只是偶然发现了Python 3中的以下行.

1 in range(2) == True
Run Code Online (Sandbox Code Playgroud)

我原以为这是True因为1 in range(2)为True,并且True == True是真实的.

但这是输出False.所以它并不意味着相同(1 in range(2)) == True.此外,它并不意味着1 in (range(2) == True)引发错误的相同.

尽管有多年的Python经验,但我还是措手不及.到底是怎么回事?

python python-3.x

9
推荐指数
1
解决办法
304
查看次数

为什么'=='在Python之前'in'出现?

以下代码输出False,根据Python操作顺序,它应该输出True(顺序应该在 - > ==,而不是相反).为什么==之前会来?

y = "33"
"3" in y == True
Run Code Online (Sandbox Code Playgroud)

产量

False
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
2
解决办法
232
查看次数

在 Python 中处理两个或多个连续成员运算符的顺序是什么?

>>> g = [1, True, 5]
>>> print(1 in g in g)
False

>>> g.append(g)
>>> print(1 in g in g)
True
Run Code Online (Sandbox Code Playgroud)

为什么第一个片段在列表中并且也在列表中False时作为输出给出?1True

True当我附加g到它时,为什么它作为输出给出?

python membership operators python-3.x

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

在python中,a &lt;b &lt;c是什么意思?

if a[start] <= target < a[mid]一样的a[start] <= target and target<a[mid] and a[start] < a[mid]吗?(我认为不是,但是看起来在外观上是相同的)这是如何工作的?搜索了SO,但找不到答案。

python comparison boolean operators comparison-operators

2
推荐指数
1
解决办法
50
查看次数

为什么“False == False != True”在 Python 中为 True 而在 JavaScript 中为 false?

我的实习生刚刚联系我并询问为什么在 Python 中False == False != True求值为 to True,而false在 JavaScript 中求值。

我认为那个语句是false/ False,无论你怎么解决它,它都会False在我的脑海中吐出来。

详细情况如下:

given: 
False == False != True

#Case 1:
False == False => True
True != True => False

#Case 2:
False != True => True
False == True => False
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗?我尝试了 JS,!= and ===但由于类型相同,因此它保持相同的输出。

javascript python conditional-statements

2
推荐指数
1
解决办法
163
查看次数

为什么在 Python 中 3&gt;2&gt;1 返回 True 而 (3&gt;2)&gt;1 返回 False?

我无法找到有关它的正确文档。我在 Javascript 中做了同样的事情,两种情况都得到了 False。我知道 3>2 应该被视为 (3>2) -> True|1,因此 3>2>1 是 1>1 这是错误的。如果您能建议一些官方文档和解释,那就太好了。

x = (3 > 2) > 1

打印(x)

错误的

y = 3 > 2 > 1

打印(y)

真的

python comparison-operators python-3.x

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

条件语句在不同语言中表现不同

C编程中,以下代码块返回False

int a=15, b=10,c=5;
    if(a>b>c)
    {
        printf("True");
    }
    else
    {
        printf("False");
    }
Run Code Online (Sandbox Code Playgroud)

但在Python中,以下块返回True.

a = 15
b = 10
c = 5
if a > b > c:
    print("True")
else:
    print("False")
Run Code Online (Sandbox Code Playgroud)

编辑:链接找到解决方案,它在python透视图中解释得非常好.从C编程的角度来看,这个答案很好地解释了我的问题.

c python

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