gpt4 book ai didi

python - 内联 for 循环

转载 作者:太空狗 更新时间:2023-10-29 17:22:11 28 4
gpt4 key购买 nike

我正在尝试学习简洁的 pythonic 做事方式,并且想知道为什么我的 for 循环不能以这种方式重构:

q  = [1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5]
vm = [-1, -1, -1, -1]

for v in vm:
if v in q:
p.append(q.index(v))
else:
p.append(99999)

vm[p.index(max(p))] = i

我尝试将 for 循环替换为:

[p.append(q.index(v)) if v in q else p.append(99999) for v in vm]

但它不起作用。 for v in vm: 循环根据数字在 q 中下一个出现的时间从 vm 中逐出数字。

最佳答案

您使用的是 list comprehension在 Python 中,不是内联 for 循环(即使它类似于一个)。您可以像这样将循环编写为列表推导式:

p = [q.index(v) if v in q else 99999 for v in vm]

当使用列表理解时,您不会调用 list.append,因为列表是根据理解本身构建的。列表中的每一项都是 for 关键字左侧的表达式返回的内容,在本例中为 q.index(v) if v in q else 99999。顺便说一下,如果你确实在理解中使用了 list.append,那么你会得到一个 None 值的列表,因为这就是 append 方法总是返回。

关于python - 内联 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411631/

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