python - “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)
这段代码的输出是
False True False
这怎么可能?
让我们在x
这里测试一下:
x = True in a in a
True in [False, True]
是True
,又True in [False, True]
是True
。
x
应该如此True
。但是当我运行程序时它说False
。
现在让我们从右到左:
x = True in a in a
[False, True] in [False, True]
是False
,所以现在True in False
可能是类型错误或其他错误。
你能解释一下吗?
解决方案
Python 链接某些运算符,包括in
.
这个:
True in a in [a]
方法
(True in a) and (a in [a])
所以如果a
等于[False,True]
,则表达式为真。
其他版本:
True in a in a
True in a in (a)
是等价的。用括号括起来(a)
不会改变它的类型或值。
两者均表示(True in a) and (a in a)
,因此除非a
包含自身,否则它们都是错误的。
推荐阅读
- jmeter - 性能测试中“每秒事务数”与“每秒请求数”有什么区别?
- angular - Konva/Typescript - 从 2.5.1 到 6.0.0 的版本更新导致编译错误“索引类型没有导出的成员 'Rect/Node/Shape/group'。”
- ios - 修复了启动屏幕 swiftui 中的 ImageView
- html - 如何创建表单组以将数组插入到我的数据库中?
- flutter - 使用 Firestore 数据库的 Flutter 推送通知
- python - 根据子信息更改父类
- python - 无法从服务器下载 SQL 数据库
- javascript - 在表中如何选择特定行并获得弹出选项以删除或编辑单击复选框的行(true)
- flutter - 颤振:如何通过渐变动画更改容器颜色
- qt - 如何删除图表中的刻度线