相关疑难解决方法(0)

"是"运算符与整数意外行为

为什么以下在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运算符可以区分.为什么泄漏抽象?当我不知道它们是否是数字时,比较两个任意对象以查看它们是否相同的更好的方法是什么?

python int identity operators python-internals

476
推荐指数
11
解决办法
6万
查看次数

Python!=操作vs"不是"

在对这个问题的评论中,我看到了一个建议使用的声明

result is not None
Run Code Online (Sandbox Code Playgroud)

VS

result != None
Run Code Online (Sandbox Code Playgroud)

我想知道区别是什么,以及为什么可能推荐另一个?

python operators

223
推荐指数
5
解决办法
16万
查看次数

什么是蟒蛇中的Truthy和Falsy?它与真与假有什么不同?

我刚刚才知道有TruthyFalsy在Python这是与正常不同的价值观TrueFalse

是否有人可以深入解释什么truthyfalsy值?

我应该在哪里使用它们?

truthyTrue值以及falsyFalse值之间有什么区别?

python

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

如何计算所有列之间的相关性,并使用python或pandas删除高度相关的列

我有一个庞大的数据集,在机器学习建模之前总是建议首先你应该删除高度相关的描述符(列)如何计算列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)

请帮忙....

python numpy scipy pandas

23
推荐指数
8
解决办法
4万
查看次数

检查字符串是否不是isdigit()的更短方法

为了学习,有一个更短的方法: if string.isdigit() == False :

我想: if !string.isdigit() :if !(string.isdigit()) :这两人都没有工作.

python

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

Flake8 错误:E712 与 True 的比较应该是“if cond is True:”或“if cond:”

if user.item.purchase.status == True:
Run Code Online (Sandbox Code Playgroud)

...使用 flake8 检查时产生错误:

E712 与 True 的比较应该是“if cond is True:”或“if cond:”

status具有三个有效值:未定义、True 和 False。

python if-statement flake8

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

对象/布尔等价如何在python中工作?

来自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)

python

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