gpt4 book ai didi

python - Python 中的 Lua 风格

转载 作者:行者123 更新时间:2023-12-04 10:14:14 27 4
gpt4 key购买 nike

变量 a 不存在

我可以用 Lua 语言写:

a = (a or 0) + 1

现在 a = 1

这允许我不提前声明变量“a”。这是模拟
a = 0
a = a + 1

我如何在 Python 中做同样的事情?
a = (a or 0) + 1

附言它为什么如此重要?为避免将零赋值给变量:

python(4行代码):
for ticker in ticker_list:
total_volume[ticker] = 0

for a in range (1,10):
total_volume[ticker] = total_volume[ticker] + a

lua(2行代码):
for a=1,9 do:
total_volume[ticker] = (total_volume[ticker] or 0) + a

最佳答案

Python 确实有一个三元运算符,就像 Lua 和许多其他语言一样

但与 Lua 不同的是,Python 不会将 undefined variable 作为“假”值处理,如果您尝试对 undefined variable 求值,它会抛出错误。特别是在您的情况下,您将收到 key ticker 的 key 错误。不在场。

Lua 三元:

    total_volume[ticker] = (total_volume[ticker] or 0) + a

Python 等效项:

    total_volume[ticker] = (total_volume[ticker] if ticker in total_volume else 0) + a

Lua 会将 or 之前的值传递给您的地方如果是 truthy , python 会传递给你 if 之前的值当后面的语句是 true ,以及 else 之后的值当它是 false .

为了安全地评估 key 是否在字典中,我们可以使用 in .

这主要是为了演示您在 Lua 中使用的三元运算以及如何在 Python 中执行此操作,但这并不意味着它是解决此问题的正确工具。

我建议一个更清洁的解决方案:

   total_volume[ticker] = total_volume.get(ticker, 0) + 1

它的代码更少,更容易推理。 get将返回 total_volume[ticker]或者如果字典中不存在键,它将返回默认值, 0 .

关于python - Python 中的 Lua 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61155006/

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