私信  •  关注

Andrew F

Andrew F 最近创建的主题
Andrew F 最近回复了
6 年前
回复了 Andrew F 创建的主题 » 在Python3.x中查找数组是否存在且不为空

结果 json.dumps 是json格式的字符串,因此如果要搜索 p2 你需要做一些字符串匹配。即. 'attributes:[' in p2 会匹配是 在某处 在json中,有一个“attributes”键名,后跟一个数组。这个解决方案并不理想,因为当json字符串的格式不同时(例如使用缩进),它无法处理这种情况。

蟒蛇的方法是检查 y 就像其他答案所暗示的那样。即

('attributes' in y)  # True because it exists
(isinstance(y['attributes'], list))  # True because it's a list

最变态的方式就是 假定 这是一个列表,如果你碰到了一个,就要处理一个失败。

我还想在 Marshmallow 序列化库。它旨在处理更复杂的模式验证任务,但您也可以在这里应用它来验证attributes字段是否存在,以及它是否映射到列表。即.

y = { ... }  # like before...

from mashmallow import Schema, fields
class AttributesList(Schema):
    attributes = fields.List(fields.Dict())

al = AttributesList()
al.dumps(y)
6 年前
回复了 Andrew F 创建的主题 » python中add和sum的区别

在纽比, + 运算符被定义为元素级加法,实际上 equivalent np.add(...) .

这个 sum(iterable, [start]) 内置功能

开始 以及 可迭代的 从左到右返回总数。开始默认为0。

所以如果只给一个矩阵,它将执行一个列求和。如果给第二个参数,它将(按元素)添加到和中。所以一些小的例子可能是

sum(x)
> array([4., 6.])
# i.e. [(1+3), (2+4)]

sum(x, 1)
> array([5., 7.])
# i.e. [(1+1+3), (1+2+4)]

sum(y)
> array([12., 14.])
# i.e. [(5+7), (6+8)]

sum(x, sum(y))
> array([16., 20.])
# i.e. [((5+7)+1+3), ((6+8)+2+4)]

sum(x, y)
> array([[ 9., 12.],
         [11., 14.]])
# i.e. [[(5+1+3), (6+2+4)],
#       [(7+1+3), (8+2+4)]]

最后 sum() 正在执行 x ,然后将结果添加到 y 使用共享列。用numpy写的,相当于

sum(x, y) == x.sum(axis=0) + y

在你 __init__.py 您可以执行导入以缩短在其他地方使用它们的方式。所以一条线 π介子 可以是

from cool_name import CoolName

以后你可以

from cool import CoolName

你可能还想看看 __all__ 作为解决这个问题的另一种方法。你可以在 cool.__init__.py 模块,只要包含 阿尔法 可以显式指定要导出的对象。

关于部分类,我几乎可以肯定python通过常规类定义不支持这种功能。您可以在运行时将不同的函数注入到一个类中,从而将其组合在一起,但这肯定会很混乱。 This 答案是更深入地审视这条道路。