gpt4 book ai didi

python - 在循环中引入 python 变量的好方法

转载 作者:太空狗 更新时间:2023-10-29 19:26:34 24 4
gpt4 key购买 nike

我有 C++ 背景,正在学习 Python。我正在编写需要从 for 循环中提取特定值的代码:

seventh_value = None   # ** my question is about this line
for index in range(1, 10):
value = f(index)
# we have a special interest in the seventh value
if index == 7:
seventh_value = value
# (do other things with value here)

# make use of seventh_value here

在 C++ 中,我需要在 for 循环之前声明 seventh_value 以确保其范围不限于 for 循环。在 Python 中我不需要这样做。我的问题是省略对 seventh_value 的初始赋值是否是一种好的风格。

我知道如果循环没有迭代至少 7 次,那么我可以通过在循环之前分配给 seventh_value 来避免 NameError。假设很明显它将迭代至少 7 次(如上例中我硬编码了 10 次迭代)。

我也知道可能有其他方法可以从迭代中提取特定值。我真的只是想知道在循环之前引入变量是否是一种好的风格,如果它们将在循环之后使用的话。

我上面写的代码看起来很清楚,但我想我只是用 C++ 的眼光来看它。

最佳答案

这是在 for 循环之前将值设置为 None 的好方法。不要太担心。就个人而言,我觉得只要完全不懂的人可以阅读代码就可以了。

话虽这么说,但有一种稍微好一点的(pythonic)方法可以完全避免这个问题。 请注意以下内容不会在每次迭代时对值做任何事情——只是“特殊兴趣”部分。此外,我假设 f(..) 不会引起任何副作用(比如改变外部变量的状态(比如全局变量)。如果是这样,下面的行绝对不适合你。

seventh_value = next(f(i) for i in range(1,10) if i == 7)

上面的构造运行到 i==7,并且只在 i=7 时才调用 f(i)

关于python - 在循环中引入 python 变量的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923091/

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