小编Eci*_*ana的帖子

套套(套套...)

在Python中,可以通过以下方式拥有一组集合frozenset:

s, t = frozenset([1]), frozenset([1])
u = {s, t} # u == {frozenset([1])}
Run Code Online (Sandbox Code Playgroud)

既然 ECMAScript 6 带来了Set对象,那么 JavaScript 中是否有任何方法可以拥有一个唯一包含其他集合的集合,即丢弃除具有相同项目之外的所有集合?

我问是因为这不起作用:

var s = new Set([1]), t = new Set([1]);
var u = new Set([s, t]); // u == Set{Set{1}, Set{1}}
Run Code Online (Sandbox Code Playgroud)

我知道这Set可能会散列它所包含的其他集合的指针,这就是为什么两者{1}看起来不同的原因。我要问的是 JavaScript 中是否有一种方法可以实现上面所示的 Python 行为。

javascript set ecmascript-6

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

正则表达式库基准

是否有当代正则表达式库的最新基准?我感兴趣的是re2,pcre与JIT, ,NSRegularExpression,Irregexp等.

我发现http://lh3lh3.users.sourceforge.net/reb.shtml和正则表达式库基准测试都已经过时了.

编辑:

我找到了另一个链接:https: //github.com/axiak/pyre2#id6("性能"一章)

regex benchmarking

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

Python嵌入

我想有一个嵌入Python解释器和一个小脚本的大二进制文件 - 我对这整个静态链接,配置和make以及GCC等都是全新的.请问,有人可以向我描述构建此类可执行文件的基本步骤吗?

我在MacOS 10.6上,我下载了Python 3.3 beta.然后,我创建了"test.c":

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print('Today is', ctime(time()))\n");
  Py_Finalize();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,在一个文件夹中,我有"Python-3.3.0b1"文件夹和"test.c"文件.

我键入:

gcc -I ./Python-3.3.0b1 -o test test.c
Run Code Online (Sandbox Code Playgroud)

但我得到了很多"包含"错误.

但我甚至不确定这是否是正确的方法......?我应该首先以某种方式构建Python,然后将其与"test.c""链接"?

顺便说一下,如果Python被发布,他们会使用相同的"./configure"和"make"程序吗?他们是使用一些特殊选项还是我能够构建与python.org提供的非常相似(相同)的Python可执行文件?

此外,我尝试了这个"./configure"和"make",它创建了一个名为"build/lib.macosx-10.6-x86_64-3.3"的文件夹,其中包含许多*.so文件(?),但没有任何名为"python"的文件"或类似......?

python embed gcc

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

确定Objective-C方法在运行时是否为可变参数

有没有办法找出 - 在运行时 - 给定的方法是否是可变类型?喜欢的东西method_getTypeEncoding(); 这不会告诉我方法是否接受可变数量的参数.或者是否有一个技巧可以这么说?

runtime objective-c variadic-functions objective-c-runtime method-signature

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

恒定时间搜索

假设我有一个我切成碎片的杆.考虑到原始杆上的一点,有没有办法在恒定的时间内找出它属于哪一件?

例如:

  |------------------|---------|---------------|
  0.0                4.5       7.8532          9.123
Run Code Online (Sandbox Code Playgroud)

给定一个位置:

                                   ^
                                   |
                                   8.005
Run Code Online (Sandbox Code Playgroud)

我想得到3rd piece.

使用二进制搜索可以在O(log n)时间内轻松获得这样的答案,但是可以在O(1)中进行吗?如果我以某种方式预先处理"削减"位置?

algorithm complexity-theory search

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

多项式系数列表

如何在SymPy中的系数列表中创建多项式?

例如,给出一个[1, -2, 1]我想要的列表Poly(x**2 - 2*x + 1).我试着查看文档,但找不到任何接近它的东西.

python list sympy polynomials

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

庞加莱-米兰达定理的实现

要测试一个连续函数是否有根,在给定区间 [x0, x1] 中是否有一个单根相对容易:根据中值定理,当 x0 处的函数值的符号与 x1 处的符号相反时,有 (在至少)一个根。

\n\n

例如,给定一个二次函数:

\n\n
g(x): a*x**2 + b*x + c = 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

测试看起来像:

\n\n
if sign of g(x0) is opposite of sign of g(x1)\nthen return true\nelse return false\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于多变量情况,有Poincar\xc3\xa9\xe2\x80\x93Miranda 定理,但我在阅读链接的文章时很难正确实现测试。

\n\n

给定两个二次二元函数:

\n\n
g1(x, y): a1*x**2 + b1*y**2 + c1*x*y + d1*x + e1*y + f1 = 0\ng2(x, y): a2*x**2 + b2*y**2 + c2*x*y + d2*x + e2*y + f2 = 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

和一个矩形区域 …

algorithm math polynomial-math polynomials

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

模倒数和无符号整数

模逆可以计算如下(来自Rosetta Code):

#include <stdio.h>

int mul_inv(int a, int b)
{
    int b0 = b, t, q;
    int x0 = 0, x1 = 1;
    if (b == 1) return 1;
    while (a > 1) {
        q = a / b;
        t = b, b = a % b, a = t;
        t = x0, x0 = x1 - q * x0, x1 = t;
    }
    if (x1 < 0) x1 += b0;
    return x1;
}
Run Code Online (Sandbox Code Playgroud)

但是,ints如您所见,输入为 。上面的代码是否也适用于无符号整数(例如 …

math integer-overflow greatest-common-divisor modular-arithmetic

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

发出 DIV 指令,而不是 __udivti3

考虑以下代码:

unsigned long long div(unsigned long long a, unsigned long long b, unsigned long long c) {
    unsigned __int128 d = (unsigned __int128)a*(unsigned __int128)b;
    return d/c;
}
Run Code Online (Sandbox Code Playgroud)

当使用 x86-64 gcc 10 或 clang 10 编译时,两者都带有-O3,它会发出 __udivti3, 而不是DIVQ指令:

div:
    mov     rax, rdi
    mov     r8, rdx
    sub     rsp, 8
    xor     ecx, ecx
    mul     rsi
    mov     r9, rax
    mov     rsi, rdx
    mov     rdx, r8
    mov     rdi, r9
    call    __udivti3
    add     rsp, 8
    ret
Run Code Online (Sandbox Code Playgroud)

至少在我的测试中,前者比后者(已经)慢得多,因此问题是:有没有办法让现代编译器发出DIVQ上述代码?

编辑:假设商适合 …

c optimization gcc x86-64 clang

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

ElementTree 和使用 NameSpaces 查找

我有一个有效的 XHTML 文件。当我做

import xml.etree.ElementTree as ET
print ET._namespace_map
Run Code Online (Sandbox Code Playgroud)

它列出了:

'http://www.w3.org/1999/xhtml': 'html'
Run Code Online (Sandbox Code Playgroud)

当我做:

root.find('{http://www.w3.org/1999/xhtml}head')
Run Code Online (Sandbox Code Playgroud)

它发现:

<Element '{http://www.w3.org/1999/xhtml}head' at 0x104647168>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

root.find('html:head')
Run Code Online (Sandbox Code Playgroud)

它抱怨:

SyntaxError: prefix 'html' not found in prefix map
Run Code Online (Sandbox Code Playgroud)

是否可以find使用语法找到名称间隔元素ns:element?

python xml elementtree

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