小编Gar*_*ary的帖子

如何让PyCharm在运行时警告中打破?

我在代码中遇到了"运行时警告:在exp中遇到溢出...".如何在此警告中使pyCharm中断?它目前已超越它.

pycharm

12
推荐指数
2
解决办法
3132
查看次数

如果用户传递不同长度的参数,那么ValueError是一个适当的异常,这意味着相同吗?

在函数中,我想确保参数a和b具有相同的长度.如果不遵守,我想为此提出异常.我知道ValueError用于异常,其中参数本身不符合某些特定条件.在这种情况下,如果条件在参数之间,那么ValueError是一个适当的错误吗?如果没有,任何标准的Python异常更合适吗?

def func(a, b):
    if len(a) != len(b):
        raise ValueError("list a and list b must have the same length")
Run Code Online (Sandbox Code Playgroud)

python exception

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

如何以可读的方式指定大整数文字?

我想指定一个大整数序列(有很多零),如:

a = [1e13, 1e14, 1e19, ...]
Run Code Online (Sandbox Code Playgroud)

我的直觉是使用科学记数法.但在python中,它是一个浮点而不是整数.有没有一种简单的方法在python中编写这些整数文字而不写入所有的零,因为确保零的数量是正确的噩梦.

我相信我可以使用浮点数转换为整数int,但只是想知道是否有更好的方法?

python

12
推荐指数
2
解决办法
593
查看次数

在最小堆中获取前 n 个最大元素的时间复杂度是多少?

鉴于python中的heapq是python doc中指定的最小堆,假设我有一个包含m个元素的heapq,调用nlargest的时间复杂度是多少?我不认为复杂性是 O(n*lg(m)) 因为简单地弹出根并在最小堆中再次堆化只会让你最小?

heapq.nlargest 是如何工作的?

python

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

在崇高的文本中退出文件差异视图的按键是什么?

我正在玩升华。我进入了文件差异视图,有 2 个窗格。我不知道如何回到正常视图。

sublimetext2

5
推荐指数
2
解决办法
940
查看次数

了解Dtruss的输出

谁能指出我关于如何理解/解释dtruss(mac)或dtrace输出的报告的参考?

我只是在一个简单的程序上尝试过dtruss。例如,我得到以下输出:

PID/THRD  SYSCALL(args)          = return
250/0x103c:  getattrlist("/Volumes/CORE/CORE.app\0", 0x7FFF5E8045D8, 0x7FFF5E804250)         = 0 0
250/0x103c:  geteuid(0x7FFF5E8045E0, 0x0, 0x7FFF5E804A18)        = 501 0
250/0x103c:  geteuid(0x7FFF5E805DF0, 0x0, 0x7FFF5E805E80)        = 501 0
250/0x103c:  geteuid(0x7FFF5E805540, 0x0, 0x7FFF5E805770)        = 501 0
250/0x103c:  getattrlist("/.vol/16777224/21\0", 0x7FFF5E8046D0, 0x7FFF5E803CF0)      = 0 0
250/0x103c:  geteuid(0x7FFF5E805950, 0x0, 0x7FFF5E8059C8)        = 501 0
250/0x103c:  __mac_syscall(0x7FFF8D22057C, 0x50, 0x7FFF5E805990)         = 0 0
250/0x103c:  geteuid(0x7FFF5E805950, 0x0, 0x7FFF5E8059C8)        = 501 0
250/0x103c:  __mac_syscall(0x7FFF8D22057C, 0x51, 0x7FFF5E8059A8)         = -1 Err#30
250/0x103c:  geteuid(0x7FFF5E8057D0, 0x0, 0x7FFF5E805848)        = 501 0
250/0x103c:  getattrlist("/.vol/16777224/21\0", 0x7FFF5E804960, 0x7FFF5E803F80) …
Run Code Online (Sandbox Code Playgroud)

linux macos dtrace system-calls

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

为什么我不能在范围函数上使用关键字参数?

在python文档中,它说:

任何函数参数,无论是非可选的还是可选的(具有默认值)都可以作为关键字参数调用,只要其中一个参数名称匹配即可.但是,关键字参数必须遵循所有位置参数.

我试过这个:

kwargs = {'step':-1, 'start':10, 'stop':5}
list(range(**kwargs))
Run Code Online (Sandbox Code Playgroud)

但是python给了男人一个错误:

TypeError: range() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python

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

如何定义依赖于尚未定义的数据结构?

我想定义一个字典,以便一个函数,比如run(),用一些助记符调用,它调用类中的一个成员函数.所以我想出了以下内容:

class foo:
    dict = { 'f_func' : f, 'g_func': g }
    def f():
        pass
    def g():
        pass
    def run(self, n):
        # ... do something
        dict[n]()
Run Code Online (Sandbox Code Playgroud)

现在的问题是dict中的值是尚未定义的成员函数.我怎样才能做到这一点?

或者任何其他解决方法?

python

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

cppreferece中shared_ptr构造函数的定义是错误的吗?

在 Scott Meyers 的 Effective C++14 item 19 的第 127 页上,他说 shared_ptr 的删除器类型不是模板参数,而是在https://en.cppreference.com/w/cpp/memory/shared_ptr/ shared_ptr,(4) 构造函数将 Deleter 作为模板参数之一。

我自己在 g++10.2 中尝试过。像下面这样的东西不会编译:

auto deleter = [](foo* p) {
        std::cout << "delete ***" << std::endl;
        delete p;
};
std::shared_ptr<foo, decltype(deleter)> sp1(new foo, deleter); // error
Run Code Online (Sandbox Code Playgroud)

所以我认为 cppreference 是错误的?或者我错过了什么?

c++ c++14

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

字典运行时(Codility Test)

我尝试了一个codility示例问题,在python中回答.我没有得到100分,因为它未能及时完成大数据集.

以下是问题:

给出了由N个整数组成的非空零索引数组A. 数组A的第一个覆盖前缀是最小整数P,使得0≤P<N并且使得在数组A中出现的每个值也出现在序列A [0],A [1],...,A [P中].

例如,以下5元素数组A的第一个覆盖前缀:

A[0] = 2  A[1] = 2  A[2] = 1
A[3] = 0  A[4] = 1
Run Code Online (Sandbox Code Playgroud)

是3,因为序列[ A[0], A[1], A[2], A[3] ]等于[2, 2, 1, 0],包含在数组A中出现的所有值.

我的回答是:

def ps ( A ):
    N = len(A);
    if N == 0: return -1
    bit = {}
    for i in range(N):
        if not A[i] in bit.keys():
            bit[A[i]] = 1
            P = i
    return P
Run Code Online (Sandbox Code Playgroud)

结果:

它没有给我100这个问题因为它认为我的算法是O(N**3),并且测试用例失败了

random_n_log_100000 
random test 100 000 elements and …
Run Code Online (Sandbox Code Playgroud)

python

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

为什么我无法在赋值中将 unique_ptr 转换为原始指针?

在编写简单的二叉搜索树插入时,在g++ 4.7中遇到编译错误

\n\n
error: cannot convert \xe2\x80\x98node_ptr {aka std::unique_ptr<node>}\xe2\x80\x99 to \xe2\x80\x98node*\xe2\x80\x99 in assignment\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于函数node* n = root.get()中的行bst_insert。我不明白为什么?

\n\n
struct node;\n\ntypedef std::unique_ptr<node> node_ptr;\n\nstruct node {\n        node(int k) : key(k) {};\n        int key;\n        node_ptr left = nullptr;\n        node_ptr right = nullptr;\n};\n\nvoid bst_insert(node_ptr& root, node_ptr z) {\n    node* p = nullptr;\n    node* n = root.get();\n    while (n != nullptr) {\n        p = n;\n        n = z->key < n->key ? n->left : n->right;\n    }\n    if (p == nullptr)\n        root …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers c++11

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