小编amc*_*abb的帖子

如果在Python中使用duck-typing,你应该测试isinstance吗?

你有一个需要等于测试的Python类.Python应该使用duck-typing,但在eq函数中包含或排除isinstance测试是否更好/更准确?例如:

class Trout(object):
    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        return isinstance(other, Trout) and self.value == other.value
Run Code Online (Sandbox Code Playgroud)

python duck-typing equality

17
推荐指数
3
解决办法
2151
查看次数

在numpy中计算矩阵乘积轨迹的最佳方法是什么?

如果我有numpy的阵列AB,那么我可以计算出他们的矩阵产品的跟踪:

tr = numpy.linalg.trace(A.dot(B))
Run Code Online (Sandbox Code Playgroud)

然而,A.dot(B)当在迹线中仅使用对角线元素时,矩阵乘法不必要地计算矩阵乘积中的所有非对角线条目.相反,我可以这样做:

tr = 0.0
for i in range(n):
    tr += A[i, :].dot(B[:, i])
Run Code Online (Sandbox Code Playgroud)

但是这会在Python代码中执行循环,并不像那样明显numpy.linalg.trace.

有没有更好的方法来计算numpy数组矩阵乘积的轨迹?什么是最快或最惯用的方式?

python numpy matrix

14
推荐指数
2
解决办法
7942
查看次数

使用替换函数时,为什么反向引用不能在Python的re.sub中工作?

re.sub在Python 2.7中使用,以下示例使用简单的反向引用:

re.sub('-{1,2}', r'\g<0> ', 'pro----gram-files')
Run Code Online (Sandbox Code Playgroud)

它按预期输出以下字符串:

'pro-- -- gram- files'
Run Code Online (Sandbox Code Playgroud)

我希望以下示例相同,但它不是:

def dashrepl(matchobj):
    return r'\g<0> '
re.sub('-{1,2}', dashrepl, 'pro----gram-files')
Run Code Online (Sandbox Code Playgroud)

这会产生以下意外输出:

'pro\\g<0> \\g<0> gram\\g<0> files'
Run Code Online (Sandbox Code Playgroud)

为什么这两个例子给出不同的输出?我是否遗漏了解释此问题的文档?这种行为是否比我预期的更好?有没有办法在替换函数中使用反向引用?

python regex python-2.7

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

标签 统计

python ×3

duck-typing ×1

equality ×1

matrix ×1

numpy ×1

python-2.7 ×1

regex ×1