python - 在 `for` 循环中使用 `range(x)`

标签 python python-2.7


这两个代码块不应该打印相似的结果吗?为什么每次到达内部 for 语句时,内部循环内部的 range 函数都重新计算,而外部循环中的 range 函数仅计算一次?

x = 4
for j in range(x)
   for i in range(x)
       print i
       x = 2

结果
0
1
2
3
0
1
0
1
0
1

我知道打印的前 4 个整数 ( 0 - 3 ) 是代码的结果 for j in range(x): code 但为什么还打印了以下内容?
0
1
0
1
0
1
代码

x = 4
for j in range(x):
    print i
    x = 5

打印
0
1
2
3

附加信息 处于空闲状态的 Python 2.7

最佳答案

我只能通过遍历循环的迭代来解释,所以这里是:

x = 4
for j in range(x)
   for i in range(x)
       print i
       x = 2

第一次通过。

x = 4
for j in [0, 1, 2, 3]
    for i in range [0, 1, 2, 3]
        print i
        x = 2

打印

0
1
2
3

现在x设置为2,但是外层循环范围已经执行过了,所以不重新计算。

代码现在变成:

for j in [0, 1, 2, 3]:
    for i in [0, 1]:
        print i
        x = 2

打印

0
1

这样又继续了两次。

关于python - 在 `for` 循环中使用 `range(x)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687339/

相关文章:

python - 如何使用改进的 DFS 算法遍历循环有向图

google-app-engine - 在本地主机上导航到/_ah/admin 会产生未知的 404 错误

python - 如何从 Pandas Dataframe 计算信息的香农熵?

python - 用莫顿代码找到最近的邻居

python - 如何在 Python 中处理长 SQL 语句字符串

python - 使用 python 填写文本类型的输入并按提交

python - 如何动态构造闭包的命名空间 "pythonically"

python - 使用 tensorflow 将 3D 矩阵 reshape 为 2D 矩阵

python - 类型错误 : write() got an unexpected keyword argument 'context' - Odoo v8 to Odoo v10 community

linux - 使用 Fabric 运行后台命令(sudo : sorry, 你必须有一个 tty 才能运行 sudo)