gpt4 book ai didi

python - 在 lambda 函数 python 中返回 2 个值

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:41 24 4
gpt4 key购买 nike

我正在使用 networkx 处理图表。我想根据边缘的重量获得最长的路径。到目前为止,代码如下所示:

df = pd.read_csv('values.csv')

Graphtype = nx.MultiDiGraph()

G = nx.from_pandas_edgelist(df, source='Source', target='Destination', edge_attr='value',create_using=Graphtype)

def get_weight(G, path):
total = 0
for u, v in zip(path[:-1], path[1:]):
total += G.get_edge_data(u,v)[0]['value']
return total



longest_path = max((path for path in nx.all_simple_paths(G, 'a', 'd')),
key=lambda path: get_weight(G,path))

输出返回给我实现相同目标的最长路径。现在我也想返回返回路径的权重。

我也可以通过 weight_max = get_weight(G,longest_path) 来获取权重。

有没有办法在单个 lambda 函数本身或任何其他方式中同时返回路径和权重。

谢谢

最佳答案

您可以使用 lambda 返回多个值,方法是显式地将这些值括在括号中:

>>> invert = lambda x, y: (y, x)
>>> invert(1, 2)
(2, 1)

请注意,对 lambda 的赋值是无意义的,我在上面这样做只是为了演示目的。

这意味着,在您的代码中,您可以:

# ...
longest_path = max((path for path in nx.all_simple_paths(G, 'a', 'd')),
key=lambda path: (get_weight(G,path), path))
# ...

如果我对您需要它的理解是正确的。如果没有,希望您可以很容易地概括这个概念。

关于python - 在 lambda 函数 python 中返回 2 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com