我有一个带有一些属性的节点类
然后我有一个节点对象数组
nodes = [
Node(some attributes),
Node(some attributes),
Node(some attributes),
]
我想做这样的事情
for i, node in enumerate(nodes):
arr[i] = node.attribute
print(arr)
通过键入类似
print(nodes.attribute)
或
print([nodes].attribute)
或
print(nodes[*].attribute)
等等
然后让它返回类似于
print(nodes)
但是使用特定属性而不是返回对象
我对python有点陌生,看起来这应该比遍历数组更容易
有吗
这并不容易,因为在python中,方括号定义的是一个列表,而不是数组。列表不会强制您在整个列表中使用相同类型的元素(在您的例子中是
Node
)您有一些选择:
反复浏览列表
和你在问题中做的一样
列表理解
前一个版本使用了更具python风格的语法
在此列表中映射函数
这需要定义一个函数来接收节点并返回该节点的属性
将此函数矢量化并将数组作为参数传递
这可能是最接近你想要做的。它需要两件事:对前面的函数进行矢量化和将
nodes
转换为数组要重现此示例,您需要首先定义节点列表:
您还可以使用内置函数
getattr
代替点语法相关问题 更多 >
编程相关推荐