小编apl*_*vin的帖子

Python - 快速文件搜索

我有一个包含大量(0.5-150 万)行的文件,每行都是一个文件名(长度约为 50-100 个字符)。我需要的是通过给定查询快速搜索这些行。现在我的代码如下所示:

def similarity(haystack, needle):
    words = re.findall(r'\w+', haystack.lower()) # replacing by split with separators reduces time by about 4 seconds

    for word in words:
        if word == needle:
            return 10

    for word in words:
        if word.startswith(needle):
            return 10 ** (len(needle) / len(word))

    if needle in haystack:
        return 1

    return 0

def search(text):
    text = text.lower()
    lines = [(similarity(x, text), x) for x in lines]
    return [x[1] for x in sorted(lines, reverse = True)[:15]]
Run Code Online (Sandbox Code Playgroud)

它在我的 PC 上的示例文件上运行大约 15 …

python indexing search python-3.x

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

获取 Jinja2 中的当前区域设置

在我的网站上使用 Flask + Jinja2 和 Flask-Babel 进行翻译。该网站有两种语言(取决于 URL),我想添加一个链接以在它们之间切换。为了正确执行此操作,我需要获取当前语言环境的名称,但我在文档中没有找到这样的函数。它到底存在吗?

python gettext jinja2 python-babel

4
推荐指数
2
解决办法
5431
查看次数

Threadsafe方式具有唯一的连续值

我有这样的代码:

static volatile int i = 0;
static void Foo() {
int myInt = i++;
// now use myInt
}
Run Code Online (Sandbox Code Playgroud)

我需要具有myInt唯一且连续的每个值.例如,如果将运行5个这样的线程,它们应该具有myInt0, 1, 2, 3, 4(顺序并不重要).

所以,我不知道这种方式是否是线程安全的,以及实现我需要的最佳方法是什么?

c# multithreading thread-safety

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

在Haskell中打印NominalDiffTime

我在Haskell程序中有这样的代码:

...
start <- getCurrentTime
...
end <- getCurrentTime
...
delta = end `diffUTCTime` start
...
Run Code Online (Sandbox Code Playgroud)

在此之后,delta有类型NominalDiffTime.正如在文档中所写,这种类型继承自Num,并且我想用小数点后面的3个(例如)位置打印它.但是,使用类似的东西是printf "%.3f" delta行不通的:No instance for (PrintfArg NominalDiffTime).

怎么做到这一点?

haskell type-conversion

3
推荐指数
2
解决办法
1274
查看次数

从Haskell的列表中获取第一个权利

首先,我有一个(无限的)Eithers 列表,它是这样产生的:

x :: A
...

f :: A -> Either B A
...

xs :: [Either B A]
xs = iterate (>>=f) (Right x)
Run Code Online (Sandbox Code Playgroud)

该列表将包含几个Rights(总是有限数字),然后Left重复相同的值.我需要的是把所有的Rights和一个跟Left在它们之后.在这种特殊情况下,也可以通过更改函数来完成,但我也对最佳通用方法感兴趣.

haskell list either

3
推荐指数
2
解决办法
308
查看次数

共享主机上的 IIS 7.5 gzip 压缩

我有一个网站,它使用 ASP.NET 并托管在 IIS 7.5 共享主机上,因此我无法直接访问 IIS 设置。现在我想使用 IIS 功能启用我的页面和 css/js 文件的 gzip 压缩,但是在 Internet 上找到的任何方法都不适合我。例如,当我将这里写的内容添加到我的 Web.config 时,没有任何变化:没有错误,没有压缩。

这可能吗?如果没有,最好的选择是什么?

asp.net gzip shared-hosting web-config iis-7.5

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

在Haskell中构造无限列表

我有两个东西用于所需的无限列表:它的第一个元素

x :: A
Run Code Online (Sandbox Code Playgroud)

和生成下一个元素的函数

f :: [A] -> A
Run Code Online (Sandbox Code Playgroud)

什么是最好的(最惯用的?最快?)创建无限列表的方式?我的意思是

xs = x : f [x] : f [x, f [x]] : f [x, f [x], f [x, f [x]]] : ...
Run Code Online (Sandbox Code Playgroud)

haskell infinite-sequence

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

在haskell中执行定时命令

我有一段看起来像这样的代码:

start <- getCPUTime
(_, _, _, ph) <- createProcess (shell shellCmd) 
end <- (waitForProcess ph >> getCPUTime)
print start
print end
Run Code Online (Sandbox Code Playgroud)

如您所见,代码应该在执行之前和之后运行命令shellCmd和打印getCPUTime值.但是,它工作不正确:时间差总是零或15625000000(0.015秒).据我所知,原因是懒惰,但无法解决它.我在互联网上找到了一些例子(其中一个在上面),但没有一个能为我工作.

这样做的正确方法是什么,为什么?

io haskell timing

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

如何在Haskell中实现这个OOP案例?

在项目中我有几种不同的类型,在不同的模块中定义,每个模块都有相关的功能(这些功能具有相同的名称和非常相似的含义,所以下面的内容有意义).现在我想创建一个列表,在该列表中可以同时拥有所有这些类型的实例.我能想到的唯一可能是这样的事情:

data Common = A{...} | B{...} | ...
Run Code Online (Sandbox Code Playgroud)

但它意味着将定义保持在一个地方,而不是在不同的模块中(对于A,B,......).有一个更好的方法吗?

UPD

我对haskell很新,并写了一些与我的学习有关的课程.在这种情况下,我有不同的FormalLanguage定义方法:FiniteAutomata,Grammars等等.它们中的每一个都具有共同的功能(isAccepted,representation...),因此有一个列表,其中元素可以是任何这些类型似乎是合乎逻辑的.

oop haskell types

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

Haskell中的元组映射

我不知道它通常是怎么称呼的,但我需要的是这样的:

f a b c = a + 2 * b + 3 * c

map f [(1,2,3), (4,5,6), (7,8,9)]
Run Code Online (Sandbox Code Playgroud)

即将n元组的列表映射到具有n个单独参数的函数.在Haskell中有没有内置的方法可以做到这一点?

PS:我uncurry刚刚发现,但它似乎没有用3个参数这样做,只有2个.

haskell tuples map

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