繁体   English   中英

这段代码有问题吗? 还是我的电脑?

[英]Is there something wrong with this code? Or my computer?

我是 Python 和一般编码的初学者,但是每当我尝试运行下面的代码时,它要么只是,几乎冻结并且不运行程序,还是它将运行程序并忽略这一部分? 或者在它应该在的地方留空? 我很困惑

cubed_numbers = list(range(1, 11))
for value in cubed_numbers:
    cubed_numbers.append(value ** 3)
print(value)

你的电脑没有问题。

当您尝试迭代列表时,您正在修改(附加)列表。 基本上,您永远不会完成循环,因为您在完成之前不断添加更多内容。

通常,在迭代列表(或其他可变对象)时对其进行变异是一个非常糟糕的主意。

也许你的意思是这样的:

cubed_nums = [value**3 for value in range(1,11)]
print(cubed_nums)

output:

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

您当前正在附加到您正在计算的同一个列表中。 最好创建一个新列表来避免无限循环。

编辑:类似的东西

cubed_numbers = []
for value in list(range(1, 11)):
    cubed_numbers.append(value ** 3)
print(cubed_numbers) # Also, I guess you want to print the cubed_numbers since this is out of the for loop.

更改代码并运行:

cubed_numbers = list(range(1, 11))
for value in cubed_numbers:
    cubed_numbers.append(value ** 3)
    print(len(cubed_numbers))
    print(cubed_numbers)
    if value == 10:
        break
print(cubed_numbers)

您创建无限循环“在 cubed_numbers 中的价值”。 在下一次迭代中,您的列表获得新值,并且您的循环有新的迭代。

.append修改现有列表。

不要在您正在修改的集合上循环!

在这里,您在每次迭代中添加一些内容,因此循环永远不会结束。

相反,您可能希望一个列表循环,另一个列表存储结果。 python 中还有更多惯用的结构,例如“列表理解”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM