gpt4 book ai didi

python - 如何为一个案例迭代更多pythonic?

转载 作者:太空狗 更新时间:2023-10-30 01:59:00 24 4
gpt4 key购买 nike

情况是这样的:mylist = range(100) 并且我有一条从 src=1dest=99 的不连续路径,其中包含一个数组 pre[100 ],其中的每个值代表path中的最后一个elem。问题是:如何获取从destsrcpath 中的所有elems。可以这样做:

    path = []
i = dst
while i != src:
path.append(i)
i = pre[i]
path.append(src)

但是,有没有更简单的方法可以只使用一条语句?

示例输入

dst, src = 3, 2
pre = [2, 0, 3, 1]

输出

[3, 1, 0, 2]   #It just have to follow the path with the indices from 3 to 2.

解释:

              src  dst                v  vIndices:  0  1  2  3Pre    :  2  0  3  1From dest 3, the predecessor is 1, so we go to 1.From node 1, the predecessor is 0, so we go to 0.From node 0, the predecessor is 2, so we go to 2.2 is src, so we're done.

最佳答案

Pythonic 方式是使用现有的循环,或使用等效的生成器函数:

def gen_path(src, dst, pre):
while dst != src:
yield dst
dst = pre[dst]
yield src

然后要获取列表,您可以使用 list(gen_path(src, dst, pre)) 调用它。

无法在单个基本表达式中执行此操作,因为涉及到状态(您所在路径中的哪个节点)。可能会使用复杂的、hackish 的东西,比如 2-argument next 和带有默认参数的 lambda,但你不想去那里。

关于python - 如何为一个案例迭代更多pythonic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19993237/

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