小编nic*_*aum的帖子

Python中的条件计数

不确定之前有人问过,但我找不到明显的答案.我正在尝试计算列表中等于某个值的元素数.问题是这些元素不是内置类型.所以,如果我有

class A:
    def __init__(self, a, b):
        self.a = a
        self.b = b

stuff = []
for i in range(1,10):
    stuff.append(A(i/2, i%2))
Run Code Online (Sandbox Code Playgroud)

现在我想计算其字段b = 1的列表元素.我想出了两个解决方案:

print [e.b for e in stuff].count(1)
Run Code Online (Sandbox Code Playgroud)

print len([e for e in stuff if e.b == 1])
Run Code Online (Sandbox Code Playgroud)

哪种方法最好?还有更好的选择吗?似乎count()方法不接受键(至少在Python 2.5.1版本中).

非常感谢!

python arrays list count

26
推荐指数
2
解决办法
2万
查看次数

对值进行平方的不同方法会导致输出略有不同 - 哪种方法最准确/可靠?

我得到(非常偶尔)C代码和Python代码之间略有不同的计算结果,并设法找到一个例子.在Python中,我得到了这个:

>>> print "%.55f" %\
... (-2.499999999999999555910790149937383830547332763671875 *\
... -2.499999999999999555910790149937383830547332763671875)
6.2499999999999982236431605997495353221893310546875000000
>>> print "%.55f" %\
... ((-2.499999999999999555910790149937383830547332763671875) ** 2)
6.2499999999999973354647408996243029832839965820312500000
>>> print "%.55f" %\
... math.pow(-2.499999999999999555910790149937383830547332763671875, 2)
6.2499999999999973354647408996243029832839965820312500000
Run Code Online (Sandbox Code Playgroud)

而在C中,以下程序:

#include<math.h>
#include<stdio.h>
int main(){
    printf("%.55f\n", -2.499999999999999555910790149937383830547332763671875\
    * -2.499999999999999555910790149937383830547332763671875);
    printf("%.55f\n",\
    pow(-2.499999999999999555910790149937383830547332763671875, 2));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

6.2499999999999982236431605997495353221893310546875000000
6.2499999999999982236431605997495353221893310546875000000
Run Code Online (Sandbox Code Playgroud)

它变得更糟.跑步bc -l,我得到以下内容:

-2.499999999999999555910790149937383830547332763671875 *\
-2.499999999999999555910790149937383830547332763671875 
6.249999999999997779553950749687116367962969071310727
Run Code Online (Sandbox Code Playgroud)

这似乎是正确的结果; 卡西欧的在线高精度计算器表示赞同.

令我担心的,但是,是(var * var),(var ** 2)math.pow(var, 2)偶尔给的结果稍有不同(我使用Python 2.7.6).

谁知道为什么?

python math python-2.7

2
推荐指数
1
解决办法
107
查看次数

标签 统计

python ×2

arrays ×1

count ×1

list ×1

math ×1

python-2.7 ×1