Python中文
首页
教程
问答
标签
搜索
登录
注册
在Python中编写一个双不等式时,操作符的优先级是什么(在代码中显式显示,对于数组,如何重写它?)
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>当我要求类似的东西时,按顺序执行的具体代码是什么</p> <pre><code>>>> 1 <= 3 >= 2 True </code></pre> <p>如果这两个不等式的优先级相等,而且只是它们的求值顺序,为什么第二个不等式的函数是<code>(3 >= 2)</code>,而不是<code>(True >= 2)</code></p> <p>例如,考虑一下</p> <pre><code>>>> (1 < 3) < 2 True >>> 1 < 3 < 2 False </code></pre> <p>将第二个语句扩展为这两个语句的<code>and</code>只是Python中一个纯粹的语法捷径吗?</p> <p>我可以改变一个类的这种行为吗,这样<code>a <= b <= c</code>就可以扩展到不同的地方了?看起来是这样的</p> <pre><code>a (logical operator) b (logical operator) c --> (a logical operator b) and (b logical operator c) </code></pre> <p>但真正的问题是如何在代码中实现这一点。</p> <p>我很好奇,这样我就可以在我自己的一些类中复制这种<code>__lt__</code>和<code>__gt__</code>行为,但是我对如何保持中间参数不变感到困惑。</p> <p>下面是一个具体的例子:</p> <pre><code>>>> import numpy as np >>> tst = np.asarray([1,2,3,4,5,6]) >>> 3 <= tst array([False, False, True, True, True, True], dtype=bool) >>> 3 <= tst <= 5 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /home/ely/<ipython-input-135-ac909818f2b1> in <module>() ----> 1 3 <= tst <= 5 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() </code></pre> <p>最好重写它,这样它也能“工作”在数组中,如下所示:</p> <pre><code>>>> np.logical_and(3 <= tst, tst <= 5) array([False, False, True, True, True, False], dtype=bool) </code></pre> <p><strong>添加以澄清</strong></p> <p>在评论中表明我在解释这个问题上做得很差。以下是一些澄清性的评论:</p> <p>1)我不是在寻找一个简单的解释,解释程序在两个链式不等式之间弹出一个<code>and</code>。我早就知道了,上面这么说。</p> <p>2)对于我想要做的事情,考虑一下<code>with</code>语句(<a href="http://www.python.org/dev/peps/pep-0343/" rel="noreferrer">link</a>)。以下内容:</p> <pre><code>with MyClass(some_obj) as foo: do_stuff() </code></pre> <p>打开包装</p> <pre><code>foo = MyClass(some_obj) foo.__enter__() try: do_stuff() finally: foo.__exit__() </code></pre> <p>因此,通过适当地编写<code>MyClass</code>,我可以在<code>with</code>语句中做许多特殊的事情。</p> <p>我在问是否有一个类似的代码解压链式不等式,通过它我可以截取它在做什么,并将它重定向到使用数组式逻辑运算符,而不是仅针对我关心的类。</p> <p>我觉得我的问题很清楚,尤其是例子,但希望这能让它更清楚。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>两者具有相同的优先级,但根据<a href="https://docs.python.org/3/reference/expressions.html#comparisons" rel="nofollow">documentation</a>从左到右进行计算。形式为<code>a <= b <= c</code>的表达式被扩展为<code>a <= b and b <= c</code>。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
Django:。是不是“超级用户”字段不起作用
9 回答
Django:'DeleteQuery'对象没有属性'add'
1 回答
Django:'ModelForm'对象没有属性
6 回答
Django:'python manage.py runserver'返回'TypeError:'WindowsPath'类型的对象没有len()
7 回答
Django:'Python管理.pysyncdb'不创建我的架构表
8 回答
Django:'Python管理.py迁移“耗时数小时(和其他奇怪的行为)
7 回答
Django:'readonly'属性在我的ModelForm上不起作用
10 回答
Django:'RegisterEmployeeView'对象没有属性'object'
9 回答
Django:'str'对象没有属性'get'
5 回答
Django:'创建' 不能被指定为Order模型表单中的值,因为它是一个不可编辑的字段
5 回答
Django:“'QuerySet'类型的对象不是JSON可序列化的”
4 回答
Django:“'utf8'编解码器无法解码位置19983中的字节0xe9:无效的连续字节”,加载临时文件时
2 回答
Django:“<…>”需要有一个字段“id”的值,然后才能使用这个manytomy关系
3 回答
Django:“AnonymousUser”对象没有“get_full_name”属性
10 回答
Django:“ascii”编解码器无法解码位置1035中的字节0xc3:序号不在范围内(128)
5 回答
Django:“BaseTable”对象不支持索引
5 回答
Django:“collections.OrderedDict”对象不可调用
4 回答
Django:“Country”对象没有属性“all”
4 回答
Django:“Data”对象没有属性“save”
8 回答
Django:“datetime”类型的对象不是JSON serializab
1 回答