如何解决Python“冻结”Jupyter notebook 中的列表推导式
当我在 Jupyter notebook 中运行下面的代码时,我的“内核”冻结(我在方括号之间有一个星号,如下所示:[*]):
x = [1,2,3,4]
for num in x:
x.append(num**2)
为什么这段代码不将取幂的数字“附加”到 x 的末尾?
x = [1,4]
out = []
for num in x:
out.append(num**2)
print(out)
解决方法
您正在迭代一个列表,并且在每次迭代中都将一个新元素附加到列表中,因此迭代永远不会结束。
要查看发生了什么,请将您的代码更改为:
import time
x = [1,2,3,4]
for num in x:
x.append(num**2)
time.sleep(0.5)
print(x)
如果您知道自己在做什么,就可以使用 [:]
技巧避免这种“动态迭代”:
x = [1,4]
for num in x[:]:
x.append(num**2)
通过这种方式,您将迭代 x[:]
,而不是不断增长的 x
,实际上就像您在迭代 x
的快照一样。
更简洁地,您可以使用如下的列表推导式:
public function destroyarchieve(Request $request,$id) {
// dd($id);
// return $request;
$i = invoices::find($id);
$i->forceDelete();
return back();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。