小编Joh*_*nes的帖子

多个构造函数:Pythonic方式?

我有一个容纳数据的容器类.创建容器时,有不同的方法来传递数据.

  1. 传递包含数据的文件
  2. 通过参数直接传递数据
  3. 不要传递数据; 只需创建一个空容器

在Java中,我将创建三个构造函数.以下是在Python中可能出现的情况:

class Container:

    def __init__(self):
        self.timestamp = 0
        self.data = []
        self.metadata = {}

    def __init__(self, file):
        f = file.open()
        self.timestamp = f.get_timestamp()
        self.data = f.get_data()
        self.metadata = f.get_metadata()

    def __init__(self, timestamp, data, metadata):
        self.timestamp = timestamp
        self.data = data
        self.metadata = metadata
Run Code Online (Sandbox Code Playgroud)

在Python中,我看到了三个明显的解决方案,但它们都不是很漂亮:

:使用关键字参数:

def __init__(self, **kwargs):
    if 'file' in kwargs:
        ...
    elif 'timestamp' in kwargs and 'data' in kwargs and 'metadata' in kwargs:
        ...
    else:
        ... create empty container
Run Code Online (Sandbox Code Playgroud)

B:使用默认参数:

def …
Run Code Online (Sandbox Code Playgroud)

python constructor initialization idiomatic initializer

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

Matlab中离散参数的优化

我有12组向量(每组约10-20个向量),我想选择每组的一个向量,以便将这些向量的总和作为参数的函数f最大化.另外,我对该总和的某些组件有约束.

例:

a_1 = [3 2 0 5], a_2 = [3 0 0 2], a_3 = [6 0 1 1], ... , a_20 = [2 12 4 3]
b_1 = [4 0 4 -2], b_2 = [0 0 1 0], b_3 = [2 0 0 4], ... , b_16 = [0 9 2 3]
...
l_1 = [4 0 2 0], l_2 = [0 1 -2 0], l_3 = [4 4 0 1], ... , l_19 = [3 0 9 …
Run Code Online (Sandbox Code Playgroud)

matlab mathematical-optimization

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

检查两个字典是否不相交

有没有比计算它们的交集更容易/更快的方法来找出两个字典是否不相交?

对于交叉点,我找到了这个答案,所以不相交测试看起来像这样:

def dicts_disjoint(a, b):
    keys_a = set(a.keys())
    keys_b = set(b.keys())
    intersection = keys_a & keys_b
    return not len(intersection)
Run Code Online (Sandbox Code Playgroud)

但是我认为这是低效的,因为它总是计算整个交叉点(没有短路退出)。

有什么更好的想法吗?

python dictionary disjoint-sets set-intersection

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