小编AHu*_*man的帖子

Haskell的懒惰是Python生成器的优雅替代品吗?

在编程的运动,它首先要求编程的阶乘函数,然后计算的总和:1! + 2! + 3! +... n!O(n)乘法(所以我们不能直接使用阶乘).我不是在寻找这个特定(微不足道)问题的解决方案,我正在尝试探索Haskell的能力,这个问题是我想要玩的玩具.

我认为Python的生成器可以很好地解决这个问题.例如 :

from itertools import islice
def ifact():
    i , f = 1, 1
    yield 1
    while True:
        f *= i
        i += 1
        yield f

def sum_fact(n):
    return sum(islice(ifact(),5))
Run Code Online (Sandbox Code Playgroud)

然后我试图弄清楚Haskell中是否有类似于这个生成器的行为,我认为懒惰会让所有员工都没有任何额外的概念.

例如,我们可以用我的Python ifact替换

fact = scan1 (*) [1..]
Run Code Online (Sandbox Code Playgroud)

然后用以下方法解决练习:

sum n = foldl1 (+) (take n fact)
Run Code Online (Sandbox Code Playgroud)

我想知道这个解决方案是否真的与Python关于时间复杂性和内存使用的"等效".我会说Haskell的解决方案永远不会存储所有列表事实,因为它们的元素只使用一次.

我是对还是完全错了?


编辑:我应该更准确地检查:

Prelude> foldl1 (+) (take 4 fact)
33
Prelude> :sprint fact
fact = 1 : 2 : 6 : 24 …
Run Code Online (Sandbox Code Playgroud)

python haskell lazy-evaluation

23
推荐指数
3
解决办法
2398
查看次数

将Pygame窗口嵌入到Tkinter或WxPython框架中

我和朋友正在玩游戏.我们希望将一个pygame窗口嵌入到tkinter或WxPython框架中,以便我们可以包含WX或Tkinter支持的文本输入,按钮和下拉菜单.我已经在互联网上搜索了答案,但我发现所有人都在问同样的问题,这些都没有得到很好的回答.

实现嵌入到tkinter或WX帧中的pygame显示的最佳方法是什么?(TKinter更好)

将这些功能与pygame显示一起包含的任何其他方式也可以.

python embed pygame wxpython tkinter

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

如何在Windows中使用Subprocess

我试图在变量Result中保存结果或函数runcmd.这是我尝试过的:import subprocess

def runcmd(cmd):
  x = subprocess.Popen(cmd, stdout=subprocess.PIPE)
  Result = x.communicate(stdout)
  return Result
runcmd("dir")
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我得到了这个结果:

Traceback (most recent call last):
  File "C:\Python27\MyPython\MyCode.py", line 7, in <module>
    runcmd("dir")
  File "C:\Python27\MyPython\MyCode.py", line 4, in runcmd
    x = subprocess.Popen(cmd, stdout=subprocess.PIPE)
  File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

python windows subprocess pipe

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

如何在Python中运行.exe文件

我试图在python2.7中运行.exe文件.我已经尽了一切努力从搜索它.以下是我尝试过的一些代码:

subprocess.Popen(r"C:\Programs Files\Internet Explorer\iexplore.exe")
Run Code Online (Sandbox Code Playgroud)

和:

subprocess.Popen(["cmd","/c",r"C:\Programs Files\Internet Explorer\iexplore.exe"])
Run Code Online (Sandbox Code Playgroud)

和:

os.popen(r"C:\Programs Files\Internet Explorer\iexplore.exe")
Run Code Online (Sandbox Code Playgroud)

除了第一个(导致Windows错误)之外的所有内容似乎都没有运行iexplore.exe.

有没有其他方法来运行.exe文件?

python exe

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

旋转 GIF 图像并保存 GIF 动画

我有问题。:) 我需要旋转这个 gif图像

我找到了很多很多脚本,但是当我旋转这个图像时,GIF 动画停止了。

如何旋转 GIF 图像并保留动画?谢谢你。

python linux image gif

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

最后3个数字的Fibbonaci样序列

是否存在非递归方式,我可以通过添加最后3个数字来制作"斐波那契"序列?

这是我尝试这样做的递归方式.

def fib3(n):
    if n < 3:
        return 1
    else:
        return fib3(n-1) + fib3(n-2) + fib3(n-3)
Run Code Online (Sandbox Code Playgroud)

回报 1+1+1+3+5+9+17...+(n-1) + (n-2) + (n-3)

任何帮助将不胜感激.

提前致谢

python math fibonacci

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