小编a b*_*der的帖子

当"if not []"成功时,为什么"[] == False"评估为False?

我问这个是因为我知道检查列表是否为空的pythonic方法如下:

my_list = []
if not my_list:
    print "computer says no"
else:
    # my_list isn't empty
    print "computer says yes"
Run Code Online (Sandbox Code Playgroud)

将打印computer says no,等等,这使我认识[]False真值; 但是,如果我尝试直接比较[]和False,我会得到以下结果:

>>> my_list == False
False
>>> my_list is False
False
>>> [] == False
False
Run Code Online (Sandbox Code Playgroud)

等等...

这里发生了什么?我觉得我错过了一些非常明显的东西.

python

31
推荐指数
3
解决办法
4166
查看次数

如何从嵌套列表中正确省略NA?

我正在使用列表列表 - 让我们称之为L- 在R中,其中子列表的长度都相同并且用NA填充.理想情况下,我想从每个子列表中删除NA元素,我想出的一个解决方案是L <- lapply(L, na.omit).它似乎几乎可以工作; 但是,对于每个子列表,行为都是这样的,例如,

[[1]]
[1] "0"     "12345"  "12346"  "12347" "12348"  "12349"  "12340"  "12341"  "12342" NA      NA          NA      NA      NA      NA     

[16] NA      NA      NA      NA      NA      NA      NA      NA      NA      NA      NA    
Run Code Online (Sandbox Code Playgroud)

[[1]]
[1] "0"     "12345"  "12346"  "12347" "12348"  "12349"  "12340"  "12341"  "12342"
attr(,"na.action")
[1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
attr(,"class")
[1] "omit"
Run Code Online (Sandbox Code Playgroud)

我有点困惑,说实话 - attr() …

r

4
推荐指数
1
解决办法
1996
查看次数

Python:为什么调用"f"运行速度比"f()"快4倍?

我刚才看到Alex Martelli今晚展示了这一点.我没有理解为什么这里存在如此大的速度差异,而且我仍然很好奇:

% python -mtimeit -s'def f(): pass' 'f()'
10000000 loops, best of 3: 0.121 usec per loop
% python -mtimeit -s'def f(): pass' 'f'
10000000 loops, best of 3: 0.0265 usec per loop
Run Code Online (Sandbox Code Playgroud)

那么为什么f跑得比这快得多f()呢?不可否认,这个例子有点人为,因为我不知道它是否会推广到所有不带参数的函数.引擎盖下发生了什么?

python

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

标签 统计

python ×2

r ×1