小编fan*_*656的帖子

嵌套的块在Haskell中?

说我想这样做:

nestedChunksOf [3, 2] [1,1,1,2,2,2,3,3,3,4,4,4] == [[[1,1,1], [2,2,2]], [[3,3,3], [4,4,4]]]
Run Code Online (Sandbox Code Playgroud)

在Python中,我可以做到这一点

def group(a, *ns):
    for n in ns:
        a = [a[i:i+n] for i in xrange(0, len(a), n)]
    return a

group([1,1,1,2,2,2,3,3,3,4,4,4], 3, 2) == [[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]
Run Code Online (Sandbox Code Playgroud)

但在哈斯克尔,我不能只说

nestedChunksOf :: [Int] -> [a] -> [[a]]
Run Code Online (Sandbox Code Playgroud)

要么

nestedChunksOf :: [Int] -> [a] -> [[[a]]]
Run Code Online (Sandbox Code Playgroud)

那么如何才能在Haskell中实现同样的功能呢?

haskell nested list

5
推荐指数
3
解决办法
253
查看次数

Python中列表解析的闭包

在列表理解中使用闭包时,我发现了这个:

xs = [1, 2, 3]
fs = [lambda: _ for _ in xs]
vs = [_() for _ in fs]
print vs           # [<function <lambda> at 0x020324B0>, <function <lambda> at 0x020D6AB0>, <function <lambda> at 0x020D6AF0>]
print vs[0]        # <function <lambda> at 0x020324B0>
print vs[0]()      # <function <lambda> at 0x020D6AF0>
print vs[0]()()    # <function <lambda> at 0x020D6AF0>
print vs[0]()()()  # <function <lambda> at 0x020D6AF0>
Run Code Online (Sandbox Code Playgroud)

不应该vs包含ints而不是lambdas?

但是如果我们在两个列表推导中使用不同的名称,它将按预期工作:

xs = [1, 2, 3]
fs = [lambda: …
Run Code Online (Sandbox Code Playgroud)

python closures list-comprehension

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

由于页面缓存,os.walk()在第一次运行后是否更快?

我os.walk用来迭代1000个文件(只是迭代,没有对这些文件进行处理).第一次运行很慢,但后续运行(在同一路径上)大约快20倍.

据我所知,os.walk并os.listdir(通过使用os.walk)并没有做任何缓存,也不FindFirstFile/ FindNextFile(这是通过使用os.listdir我的Windows平台上).

这是由于页面缓存还是其他一些原因?

仅供参考,我正在尝试编写备份应用程序并需要处理大量文件.如果确实是由于页面缓存,那么我需要编写自己的缓存机制.

python caching

3
推荐指数
1
解决办法
263
查看次数

标签 统计

python ×2

caching ×1

closures ×1

haskell ×1

list ×1

list-comprehension ×1

nested ×1