小编Rub*_*ens的帖子

使用字符串动态添加类成员来命名它

在Python中,我非常清楚可以在定义之后将类添加到类中.但是,有没有办法使用字符串的内容命名成员?

例如,我可以这样做:

class A:
    pass
A.foo = 10

a = A()
print a.foo
Run Code Online (Sandbox Code Playgroud)

但是有一些方法可以做到这一点:

name = "foo"
class A:
    pass
A.[some trick here(name)] = 10

a = A()
print a.foo
Run Code Online (Sandbox Code Playgroud)

python class dynamic member

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

awk shebang不起作用

我有一个简单的awk程序:

#!/usr/bin/awk -f
BEGIN {print "work already!"}
Run Code Online (Sandbox Code Playgroud)

如果我运行它:

awk -f panic
Run Code Online (Sandbox Code Playgroud)

在(osx)终端上它可以工作.但是如果我尝试将其作为脚本运行它会失败:

. panic
-bash: BEGIN: command not found
Run Code Online (Sandbox Code Playgroud)

我检查了awk使用的位置,which awk它确实位于/usr/bin/awk.任何想法为什么它不起作用?

unix linux bash shell awk

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

引用如何不需要存储?

这个问题,因此,从标准(ISO C++ - 03):

未指定参考是否需要存储(3.7).

在该线程的一些答案中,据说引用在内部具有相同的指针结构,因此具有相同的大小(32/64位).

我挣扎把握的是:如何将一个参考来要求存储?

任何举例说明这一点的示例代码都将非常感激.

编辑:来自@ JohannesSchaub-litb评论,有什么类似的,如果我没有使用const &,或者如果我使用const &默认值,它需要分配?在某种程度上,在我看来,根本不应该为引用分配 - 当然,除非涉及明确的分配,例如:

A& new_reference(*(new A())); // Only A() instance would be allocated,
                              // not the new_reference itself
Run Code Online (Sandbox Code Playgroud)

有这样的情况吗?

c++ compiler-construction variables reference

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

计算Linux中几个"时间"命令的平均值

我正在使用"time"命令在Linux上分析程序.问题是它的输出在统计上不是很相关,因为它只运行一次程序.是否有工具或方法可以获得平均几次"时间"运行?可能与偏差等统计信息一起?

language-agnostic linux statistics benchmarking profiling

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

Excel 对带有字母前缀的数字进行排序

我有一个专栏:

a1
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a2
a20
a21
a22
a23
a24
a25
a26
a27
a28
a29
a3
a30
a31
a4
a5
a6
a7
a8
a9
Run Code Online (Sandbox Code Playgroud)

但我需要这样排序:

a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13....
Run Code Online (Sandbox Code Playgroud)

有谁知道该怎么做?

sorting excel

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

压缩"n"时间对象成员调用

是否有任何非显式for方法可以n在对象上调用成员时间?

我正在考虑一些map/reduce/lambda方法,但我想不出办法做到这一点 - 如果有可能的话.

只是添加上下文,我正在使用BeautifulSoup,我正在从html表中提取一些元素; 我提取了一些元素,然后是最后一个元素.

因为我有:

# First value
print value.text

# Second value
value = value.nextSibling
print value.text

# Ninth value
for i in xrange(1, 7):
    value = value.nextSibling
print value.text
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何lambda方法 - 或其他 - 允许我这样做:

# Ninth value
((value = value.nextSibling) for i in xrange(1, 7))
print value.text
Run Code Online (Sandbox Code Playgroud)

PS:不,这种for方法没有任何问题,除了我真的很喜欢单线解决方案,这在我的代码中非常适合.

python lambda for-loop beautifulsoup

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

C++ std :: unordered_set SIGFPE异常

我写了一个程序,我很开心我已经运行了几十次 - 我甚至写下了多次执行的结果 - 现在它不起作用.

你可能会认为我说风筝很高,或者我可能只是改变了一些线条,但我真的不记得在程序上做了任何改动.

根据输入,问题是a SIGFPE,在程序的不同执行中会增加.虽然在插入值时std::unordered_set<Point<T> *>引发了信号但是会发生.

这是我执行此类插入的代码片段:

std::vector<Point<T> *> _point, _centroid;
std::vector<std::unordered_set<Point<T> *> > _cluster;

// Main procedure -- pseudocode
for (point in _point) {
    cluster_id = centroid_with_min_distance(point, _centroid);
    has_changed = _change_cluster(point, cluster_id);
}

// Changes from one "point->_cluster's unordered_set" to "c's unordered_set"
bool _change_cluster(Point<T> *point, const unsigned int& c) {

    if ((point->_cluster == c) &&
        (_cluster[c].find(point) != _cluster[c].end())) {
        return false;
    }

    _cluster[point->_cluster].erase(point);
    _cluster[c].insert(point); // Insertion that raises …
Run Code Online (Sandbox Code Playgroud)

c++ stl sigfpe unordered-set

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

在没有numpy(python)的列表上进行元素操作的正确样式

我想通过元素,而无需使用numpy的列表元素上进行操作,例如,我想add([1,2,3], [2,3,4]) = [3,5,7]mult([1,1,1],[9,9,9]) = [9,9,9],但我不知道它在做的方式是,它认为"正确"的风格.

我提出的两个解决方案是

def add(list1,list2):
    list3 = []
    for x in xrange(0,len(list1)):
        list3.append(list1[x]+list2[x])
    return list3

def mult(list1, list2):
    list3 = []
    for x in xrange(0,len(list1)):
        list3.append(list1[x]*list2[x])
    return list3

def div(list1, list2):
    list3 = []
    for x in xrange(0,len(list1)):
        list3.append(list1[x]/list2[x])
    return list3

def sub(list1, list2):
    list3 = []
    for x in xrange(0,len(list1)):
        list3.append(list1[x]-list2[x])
    return list3
Run Code Online (Sandbox Code Playgroud)

每个操作员都有一个单独的功能

def add(a,b)
    return a+b
def mult(a,b)
    return a*b
def div(a,b)
    return a/b
def sub(a,b)
    return a-b …
Run Code Online (Sandbox Code Playgroud)

python functional-programming coding-style list higher-order-functions

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

获取数据库中的最后一个自动增量值

我试图检索mySQL中最后插入的数据的自动增量值.这是我的代码:

public int getAutoIncrementProductID() {
    ResultSet rs = null;
    DBController db = new DBController();
    db.getConnection();
    int autoIncKeyFromFunc = -1;
    rs = db.readRequest("SELECT LAST_INSERT_ID()");
    try {
        if (rs.next()) {
            autoIncKeyFromFunc = rs.getInt(1);
            System.out.println("AUTO ID IS " + autoIncKeyFromFunc);
            rs.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    db.terminate();
    return autoIncKeyFromFunc;
}
Run Code Online (Sandbox Code Playgroud)

但是,尽管数据库中的自动增量列不断增加,但这些代码仍然返回0值.它只是不会得到最后插入数据的自动增量值.有人可以帮忙吗?

mysql

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

封装C#newbie

C#的新手,我知道封装只是一种"保护数据"的方式.但我还不清楚.我认为 get和set访问的是增加这些方法中的测试,以检查是否参数满足一定条件,允许外部函数来获取和设置任何东西,这样才:

private string myName;
public string MyName;// this is a property, speical to c#, which sets the backing field.

private string myName = "mary";// the backing field.

public string MyName // this is a property, which sets/gets the backing field.
{
    get
    {
        return myName;
    }
    set
    {
        if (value != "Silly Woman"){ 
           myName = value;
        }

    } 
}
Run Code Online (Sandbox Code Playgroud)

但是我一直在看c#中的代码看起来像这样:

public string MyName { get; set; }
Run Code Online (Sandbox Code Playgroud)

为什么你只是在那里得到一个没有任何东西的get-set, - 这不仅仅是公开你的私人支持领域吗?如果您可以从外部获取并设置它,为什么不直接进行?

c# encapsulation get set

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