为什么以下在Python中出现意外行为?
>>> a = 256
>>> b = 256
>>> a is b
True # This is an expected result
>>> a = 257
>>> b = 257
>>> a is b
False # What happened here? Why is this False?
>>> 257 is 257
True # Yet the literal numbers compare properly
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 2.5.2.尝试一些不同版本的Python,似乎Python 2.3.3显示了99到100之间的上述行为.
基于以上所述,我可以假设Python在内部实现,使得"小"整数以不同于大整数的方式存储,is运算符可以区分.为什么泄漏抽象?当我不知道它们是否是数字时,比较两个任意对象以查看它们是否相同的更好的方法是什么?
在对这个问题的评论中,我看到了一个建议使用的声明
result is not None
Run Code Online (Sandbox Code Playgroud)
VS
result != None
Run Code Online (Sandbox Code Playgroud)
我想知道区别是什么,以及为什么可能推荐另一个?
我刚刚才知道有Truthy和Falsy在Python这是与正常不同的价值观True和False?
是否有人可以深入解释什么truthy和falsy值?
我应该在哪里使用它们?
truthy和True值以及falsy和False值之间有什么区别?
我有一个庞大的数据集,在机器学习建模之前总是建议首先你应该删除高度相关的描述符(列)如何计算列wice相关性并删除具有阈值的列说删除所有列或描述符具有> 0.8的相关性.它也应该保留减少数据中的标题..
示例数据集
GA PN PC MBP GR AP
0.033 6.652 6.681 0.194 0.874 3.177
0.034 9.039 6.224 0.194 1.137 3.4
0.035 10.936 10.304 1.015 0.911 4.9
0.022 10.11 9.603 1.374 0.848 4.566
0.035 2.963 17.156 0.599 0.823 9.406
0.033 10.872 10.244 1.015 0.574 4.871
0.035 21.694 22.389 1.015 0.859 9.259
0.035 10.936 10.304 1.015 0.911 4.5
Run Code Online (Sandbox Code Playgroud)
请帮忙....
为了学习,有一个更短的方法:
if string.isdigit() == False :
我想:
if !string.isdigit() :和if !(string.isdigit()) :这两人都没有工作.
if user.item.purchase.status == True:
Run Code Online (Sandbox Code Playgroud)
...使用 flake8 检查时产生错误:
E712 与 True 的比较应该是“if cond is True:”或“if cond:”
status具有三个有效值:未定义、True 和 False。
来自javascript,我发现这个行为很奇怪:
>>> empty_list = []
>>> empty_list == True
False
>>> empty_list is True
False
>>> empty_list is False
False
>>> empty_list == False
False
Run Code Online (Sandbox Code Playgroud)
而另一方面:
>>> one_list = [1]
>>> one_list is False
False
>>> one_list is True
False
>>> one_list == False
False
>>> one_list == True
False
Run Code Online (Sandbox Code Playgroud)
实际上,我预计到了:
if []:
pass # This never done
Run Code Online (Sandbox Code Playgroud)
和
if [4]:
pass # This is always done
Run Code Online (Sandbox Code Playgroud)
和
>>> not []
True
>>> not [1]
False
Run Code Online (Sandbox Code Playgroud)
列表将转换为布尔值.
我知道
>>> bool([]) …Run Code Online (Sandbox Code Playgroud)