【问题标题】:Variable in loop on Python don't change [duplicate]Python上的循环变量不会改变[重复]
【发布时间】:2026-01-21 17:45:01
【问题描述】:

我不明白为什么循环变量不会改变,但我明确地尝试了一下。所以这是我的代码:

a=[1,2,3]
b=["a","b","c"]
d=[a,b]
for i in d:
    for a in i:
         a*2
         print(a)

当我跑步时,我看到了:

1
2
3
a
b
c

而不是预期:

2
4
6
aa
bb
cc

【问题讨论】:

  • 你应该打印2 * a 而不是一个
  • 您没有将新值分配给任何变量。将a*2 替换为a=a*2
  • a*2 行“丢失”,它不会改变a 的值。为此,您需要通过执行a = a * 2 重新分配a 的新值,或者通过执行print a * 2 打印所需的值。此外,您将变量 a 用于第二个循环中的数组和内部变量。不惜一切代价避免这种情况。
  • 顺便说一句,我不明白为什么人们对此表示反对。当然,这是一个绝对基本的问题,但对于一个显然完全不熟悉编程的人来说,我会说这是一个完全合法的问题。

标签: python python-3.x


【解决方案1】:

为了在迭代i 时更改a,您必须将值赋给变量。

所以而不是

for a in i:
    a*2
    print(a)

试试

for a in i:
    a = a*2
    print(a)

【讨论】:

    【解决方案2】:

    因为您没有为变量赋值。如果你做 a = a*2,它会改变,而不仅仅是 a*2。在 python shell 中试试这个:

    >>> a=[1,2,3]
    >>> b=["a","b","c"]
    >>> d=[a,b]
    >>> for i in d:
    ...     for a in i:
    ...         a=a*2
    ...         print(a)
    ... 
    2
    4
    6
    aa
    bb
    cc
    >>>
    

    【讨论】:

      【解决方案3】:
      a=[1,2,3]
      b=["a","b","c"]
      d=[a,b]
      for i in d:
          for a in i:
               a=a*2 # change this line like that
               print(a)
      

      【讨论】:

        最近更新 更多