【问题标题】:Multiplying iteration variable in for loop in python在python的for循环中乘以迭代变量
【发布时间】:2020-05-11 19:23:51
【问题描述】:

这段代码是否会将 i 加 1?

    for i in range(100):
         print(i)
         i*=2

【问题讨论】:

  • 尝试过了吗?发生了什么?
  • 乘法后移动打印?使用上面的代码 sn-p 你的问题不是很清楚。此外,如果您想在每次迭代后将i 的值更改为i=i*2,请使用while 循环而不是for 循环
  • 在循环的顶部,i 将采用值01、...、99。在循环中,在执行i*=2 之后,i 将加倍直到下一次迭代,之后它将取序列中的下一个值,就像i*=2 从未执行过一样。
  • 那么,如何在for循环中使用更新语句,就像我们在java中使用的那样?
  • 你没有。请改用while 循环。

标签: python loops for-loop iteration


【解决方案1】:

它将增加1。当您使用像 range() 这样的迭代器时,您每次都会从迭代器中分配下一个值,而您在循环中分配给 i 的任何内容都会被忽略。

如果你想让它每次翻倍,不要使用range(),自己更新并结束测试。

i = 1
while (i < 100):
    print(i)
    i *= 2

【讨论】:

    【解决方案2】:

    i 将从迭代器生成的序列的第一个值开始(在本例中为range()),然后乘以2,并将保留该值直到下一次循环迭代它将获得迭代器range()生成的序列的下一个值,

     for i in range(5):
             print("Before update")
             print(i)
             i*=2
             print("After update")
             print(i)
    
    

    输出:

    Before Update
    0
    After Update
    0
    Before Update
    1
    After Update
    2
    Before Update
    2
    After Update
    4
    Before Update
    3
    After Update
    6
    Before Update
    4
    After Update
    8
    Before Update
    5
    After Update
    10
    
    

    【讨论】:

    • 没有提到 OP 来增加 i 的值。 i 实际上会指向范围序列中的一个值,与增量无关。
    • @mad_ 认为问题是问i 是否会在loop 中更新。现在我已经进行了相应的编辑。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多