小编Igg*_*boo的帖子

项目Euler - 这个haskell代码如此之快?

我正在研究项目euler中的问题401,我在python中编写了我的解决方案,但它需要几天才能运行,显然我需要加速它或使用不同的方法.我在Haskell中遇到了一个与我的python解决方案几乎完全相同的解决方案,但几乎是瞬间完成的.

有人可以解释它是如此之快吗?(我不是要求帮助或解决问题401)

divisors n = filter (\x -> n `mod` x == 0) [1..(n`div`2)] ++ [n]
sigma2 n = sum $ map (\x -> x * x) (divisors n)
sigma2big n = sum $ map (sigma2)[1..n]
let s2b = sigma2big 10^15
putStrLn ("SIGMA2(10^15) mod 10^9 is " ++ (show (mod s2b 10^9)))
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它只是使用试验除法生成一个除数列表,对它们进行平方和求和,然后将结果从1加到n.

编辑:忘了我的python代码

from time import clock


def timer(function):

    def wrapper(*args, **kwargs):
        start = clock()
        print(function(*args, **kwargs))
        runtime = clock() - start
        print("Runtime: %f seconds." % runtime) …
Run Code Online (Sandbox Code Playgroud)

python haskell python-3.x

17
推荐指数
1
解决办法
2083
查看次数

编程语言如何调用用另一种语言编写的代码?

对不起,如果这太模糊了.我最近阅读了有关python的list.sort()方法的内容,并且因为性能原因读到它是用C语言编写的.

我假设python代码只是将列表传递给C代码并且C代码传回一个列表,但是python代码如何知道传递它的位置或者C给它正确的数据类型,以及如何C代码知道它给出的数据类型是什么?

c python language-agnostic cpython

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

从随机位生成随机数

所以我有一个函数可以给我随机位 rand(0,1) 我想将其推广到 rand(a,b) ,它给我一个范围为 a 到 b 的随机数。

我的想法是只计算 b - a 中的位数,然后将它们附加在一起。我认为这会起作用,但不会是统一的。我觉得它会偏向较大的数字而不是较小的数字(接近 a 的数字)。并不是真的要求一个直接的答案,只是一些帮助就很好了。

编辑:这是我到目前为止的想法,只是不确定制服部分

    pseudo code:
    function rand_range(a, b):
        n = b - a
        sum = a
        for i in range(n):
            sum += rand(0,1)

        return sum
Run Code Online (Sandbox Code Playgroud)

random algorithm

5
推荐指数
1
解决办法
2630
查看次数

Web使用动态javascript内容抓取网站

所以我使用python和beautifulsoup4(我没有绑定)来刮网站.问题是当我使用urlib抓取页面的html时,它不是整个页面,因为其中一些是通过javascript生成的.有没有办法解决这个问题?

javascript python beautifulsoup html-parsing web-scraping

5
推荐指数
1
解决办法
4661
查看次数

用枕头保存在内存文件对象中

在我的django项目中,我有一个inmemoryuploadedfile,然后用Pillow打开它,旋转它,然后保存回自己。但是,最后一步实际上不起作用。当我将其保存到文件中时,将保存正确的(旋转的)图像。如何保存回文件对象而不是实际文件?

    image = request.FILES['file']
    img = Image.open(image)
    img = img.rotate(90)
    img.save("sample.jpeg", "jpeg") #this is correct
    img.save(image, "jpeg") #this does not change the actual in memory image
Run Code Online (Sandbox Code Playgroud)

python django python-imaging-library python-2.7 pillow

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

Python QuickSort返回原始输入

所以这是我的快速排序代码

def quicksort(A):
    if len(A) > 1:
        pivot = A[0]
        L = []
        E = []
        R = []
        for i in A:
            if i < pivot:
                L.append(i)
            elif i == pivot:
                E.append(i)
            else:
                R.append(i)
        quicksort(L)
        quicksort(R)
        A = L + E + R
Run Code Online (Sandbox Code Playgroud)

我运行时的输出

array = [5,6,3,2,7]
print "original array" + str(array)
quicksort(array)
print "sorted array" + str(array)
Run Code Online (Sandbox Code Playgroud)

original array[5, 6, 3, 2, 7]
sorted array[5, 6, 3, 2, 7]
Run Code Online (Sandbox Code Playgroud)

但是,当我使用调试器逐步执行该函数时,最后一个值A持有的是[2,3,5,6,7],它被排序,为什么A在函数执行后不能保持这个?

python sorting

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

"else"语句是否有任何开销?

这之间有什么性能差异:

for item in collection:
    if item == badItem:
        break
    else
        doFunction(item)
Run Code Online (Sandbox Code Playgroud)

还有这个:

for item in collection:
    if item == badItem:
        break
    doFunction(item)
Run Code Online (Sandbox Code Playgroud)

假设我这样做了几亿次,所以任何性能差异都会有所帮助.

编辑:我实际上并没有根据这个问题的结果实现这个,我只是在理论上想知道什么是更快.我只是好奇.

python

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