我正试图从我的数据库中获取一些数据,这在我的本地机器上运行得很好。但是当部署到上时,它给了我一个错误
InterfaceError at /report/unit/D 8500/WV_herverkoop/2013/0/ 10 /未知类型<class‘十进制>用于arg 10
全追溯
InterfaceError at /report/unit/D8500/WV_herverkoop/2013/0/10/
unknown type <class 'decimal.Decimal'> for arg 10
Request Method: G
我们比较了满足约束的列表中的计数元素(下面示例中的约束,如果元素是奇数的话)。
在python3中,len比sum快得多
$ python3 -m timeit -s 'X = list(range(1000))' 'len([1 for x in X if x % 2])'
5000 loops, best of 5: 41.4 usec per loop
$ python3 -m timeit -s 'X = list(range(1000))' 'sum(1 for x in X if x % 2)'
5000 loops,
要在现有列表中复制嵌套列表,不幸的是,仅仅将其乘以是不够的,否则列表中将创建引用而不是独立的列表,请参见下面的示例:
x = [[1, 2, 3]] * 2
x[0] is x[1] # will evaluate to True
要实现您的目标,可以在列表理解中使用range函数,例如,请参阅以下内容:
x = [[1, 2, 3] for _ in range(2)]
x[0] is x[1] # will evaluate to False (wanted behaviour)
这是一个很好的方法,以增加列表中的项目,而不只是创建参考,这也是解释多次在许多不同的网站。
但是,有一种更
$ python -m timeit -s'tes = "987kkv45kk321"*100' 'a = [list(i) for i in tes.split("kk")]'
10000 loops, best of 3: 79.4 usec per loop
$ python -m timeit -s'tes = "987kkv45kk321"*100' 'b = list(map(list, tes.split("kk")))'
10000 loops, b
old = [1, 2, 3]
下面两行有什么区别(如果有)?
new = old[:]
new = list(old)
Update我已经接受了ubershmekel的答案,但后来我了解了一个有趣的事实:对于小列表(10个元素),[:]更快,而对于更大的列表(100000元素),list()更快。
~$ python -S -mtimeit -s "a = list(range(10))" "a[:]"
1000000 loops, best of 3: 0.198 usec per loop
~$ python -S -mtimeit -s "a =
在macOS上的Python3.6.7中,我在time subprocess.getoutput上运行了这个测试 In [11]: %timeit for _ in range(100000): x = 1
1.97 ms ± 48.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [12]: %timeit
所以我第一次在我的mac上和码头玩。我通过标准教程使用了boot2docker,并在ubuntu映像中启动了提示符。
docker pull ubuntu
docker run -i -t ubuntu /bin/bash
在码头的时候,我开始了我的第一个实验,看表演是否会下降。在命令行中,我将使用python timeit模块快速检查一些基本的性能度量。
Mac结果
$ python3.4 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 37.7 usec per
我目前在Python中收到一个“键错误”,我不知道发生了什么。
下面是我的代码:
""" This is a program from http://www.masnun.me/2010/01/30/handling-json-in- python.html which I am
using to experiment with how to handle JSON data in python, currently the problem is that I have a bunch
of JSON data returned from the nestoria
我对python非常陌生,我正在尝试将它嵌入到bash脚本中。我有以下bash脚本:
#!/bin/bash
while read line
do
ORD=`echo $line | cut -c 1-7`
if [[ -r ../FASTA_SEC/COMBI_RAW/${ORD}_COMBI_RAW.fa ]]
then
touch ../Results/Log_Files/Log_${ORD}.txt
for (( win = 2; win < 20; win += 2 )); do
printf &
在尝试回答时,我做了一些性能分析,得出了一个有点令人惊讶的结论。
使用
python -m timeit -s '
import itertools
import random
n=1000000
random.seed(0)
A = [random.randrange(1<<30) for _ in xrange(n)]
B = [random.randrange(1<<30) for _ in xrange(n)]
C = [random.randrange(1<<30) for _ in xrange(n)]'
对于安装程序,我对以下片
因此,这是一个CPython问题,不太确定它是否与其他实现具有相同的行为。
但'{0}'.format()比str()和'{}'.format()快。我正在发布Python3.5.2的结果,但是,我尝试了Python2.7.12,趋势是一样的。
%timeit q=['{0}'.format(i) for i in range(100, 100000, 100)]
%timeit q=[str(i) for i in range(100, 100000, 100)]
%timeit q=['{}'.format(i) for i
后续行动:
python -m timeit '[0.5]*100000'
1000 loops, best of 3: 382 usec per loop
python -m timeit '[0.5 for i in range(100000)]'
100 loops, best of 3: 3.07 msec per loop
显然,由于range(),第二种方法速度较慢。我不知道为什么e*n这么快(或者它是如何在Python内部实现的)。
我正在学习变量嵌套循环,这是Python2中的代码。
numLines = int(raw_input ('How many lines of stars do you want? '))
numStars = int(raw_input ('How many stars per line? '))
for line in range(0, numLines):
for star in range(0, numStars):
print '*',
print
这是所需的输出(在Python 2中):
How ma
$ python2.7 -m timeit 'd={}'
10000000 loops, best of 3: 0.0331 usec per loop
$ python2.7 -m timeit 'd=dict()'
1000000 loops, best of 3: 0.19 usec per loop
为什么要使用一个而不是另一个呢?
我知道在Python中,就地操作符使用__iadd__方法来处理本地操作符.对于不可变类型,__iadd__是一种使用__add__的解决方案,例如,tmp = a + b; a = tmp,但是可变类型(如列表)会被就地修改,这会带来轻微的速度提升。
但是,如果我有一个NumPy数组,其中我修改了它包含的不可变类型,例如整数或浮点数,那么速度也会有更大的提升。这是怎么回事?我在下面做了一些例子基准测试:
import numpy as np
def inplace(a, b):
a += b
return a
def assignment(a, b):
a = a
如何从一维阵列中最有效地计算二维外积的点积?
"i,j,k,l->ij,kl->“是一个很好的einsum选项,但这失败了。
invalid subscript ',' in einstein sum subscripts string, subscripts must be letters
下面是我试图加快的简单实现(A和B将是其他事情)。理想的方法是具有以下API的快速版本,其结果与以下示例相同: nd_outer_from1D(2,A,B),nd_outer_from1D(3,A,B)。正如您将看到的那样,随着{##**$$}}A++、B++和N增加,
在Perl语言中,我可以用双引号的遗传进行插值:
Perl:
#!/bin/env perl
use strict;
use warnings;
my $job = 'foo';
my $cpus = 3;
my $heredoc = <<"END";
#SBATCH job $job
#SBATCH cpus-per-task $cpus
END
print $heredoc;
Raku (F.K.A.Perl 6):
#!/bin/env perl6
my $job = 'foo';
my $cpus = 3;
my