我是python语言的新手,并且一直使用networkx
包。基本上我有一个客户和生产者列表,并希望有一个功能,可以根据这些类型检索当前列表的列表。
以下是检索客户的函数的相关代码:
def customers_iter(self, data=False):
""" Return an iterator over all customers.
If the network is changed during iteration, the iterator becomes
invalid.
Parameters
-----------
data - if True, return a list of (name, attributes) pairs, such
that attributes == net.node[name]. Otherwise,
only a list of customer names is returned. Default is
False.
"""
if data:
return (n for n in self.nodes_iter(data=True)
if self.node[n[0]]["type"] == "customer")
else:
return (n for n in self.nodes_iter()
if self.node[n]["type"] == "customer")
我的问题是关于if-和else语句。首先检查第一个节点n [0]有什么意义? else-section中的语句是否定义完全相同的东西?
此致 jazy
答案 0 :(得分:0)
根据文件评论:
data - if True, return a list of (name, attributes) pairs, such
that attributes == net.node[name]. Otherwise,
only a list of customer names is returned. Default is
False.
假设data
参数在self.node_iter
函数中具有相同的含义,第一个分支(if
)应该过滤(name, attributes)
对,但第二个分支( else
)应仅过滤name
个。
同样假设self.node
是一个类似字典的结构,用于保存关联对name
- > node
,很容易看出,在第一个分支中我们必须从name
(tuple
)中检索n[0]
,而在第二个分支中我们可以使用n
作为节点名称。