问题描述
我是 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)
输出:
[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)
您创建了无限循环“为cuved_numbers 中的值”。 在下一次迭代中,您的列表获得新值,您的循环获得新迭代。
,.append
修改现有列表。
不要在您正在修改的集合上循环!
在这里你在每次迭代中添加一些东西,所以循环永远不会结束。
相反,您可能希望一个列表循环,另一个列表存储结果。 python中还有更多惯用的结构,比如“列表理解”。