【问题标题】:Initialize variable in for loop in Python?在Python的for循环中初始化变量?
【发布时间】:2020-06-05 10:41:08
【问题描述】:

我想知道是否有任何方法可以定义将在 for 循环中应用“+=”运算符的变量,而不是在此之前。例如,我可以将 0 到 10 的数字相加代码编写为:

sum = 0
for i in range(10): 
    sum += i

我只是不想在循环之前定义变量“sum”,因为它似乎没有必要。但是,我知道我必须启动该变量,否则它会出错,或者可能会为其分配一个超级无关的随机数,该随机数可能会显示其内存地址(如在 C 中)。

所以我希望能够在 for 循环之前定义一次它的初始值。偶觉得这个问题好像挺简单的,网上搜了下也没找到办法。

【问题讨论】:

  • 为什么不直接使用sum(range(10))
  • 这只是一个简单定义问题的例子。
  • @Ahmet 看来可以在for循环的任何地方解决,而不是多占用一行来定义变量。
  • 行数并不重要,执行时间/内存问题是有效的,但在这种情况下也无关紧要。这里给出的答案不利于代码可读性,这是一个更大的问题,所以只需使用sum=0。还有,UBC'den Aydın Alpi tanıyo musun?
  • @Ahmet 感谢您清理所有问题。 Yok başkan tanımıyorum ben grad öğrenciyim çoğu Türk'ü tanımıyorum burada。

标签: python for-loop variables initialization


【解决方案1】:

您可以使用locals()setdefault 来初始化sum:

for i in range(10): 
    locals().setdefault('sum', 0)
    sum += i

【讨论】:

  • 很酷的把戏,但请不要这样做。没有人会看到这样做的原因。
  • 那么你们是说如果我想做这样的事情(我提到过),我所做的是正确和专业的吗?
【解决方案2】:

你可以使用reduce和lambda:

import functools
functools.reduce(lambda x, y: x + y, range(10))

查看:https://docs.python.org/3/library/functools.html#functools.reduce

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多