我有一个容纳数据的容器类.创建容器时,有不同的方法来传递数据.
在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) 我有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) 有没有比计算它们的交集更容易/更快的方法来找出两个字典是否不相交?
对于交叉点,我找到了这个答案,所以不相交测试看起来像这样:
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)
但是我认为这是低效的,因为它总是计算整个交叉点(没有短路退出)。
有什么更好的想法吗?