Python:删除除一个for循环之外的所有变量而不受到污染

2023-12-01

%reset
%reset -f

and

%reset_selective a
%reset_selective -f a

是 Matlab 命令“清除所有”的有用 Python 替代品,其中“-f”表示“强制而不要求确认”,“_selective”可以与

who_ls

有选择地删除工作区中的变量,如此处清晰所示https://ipython.org/ipython-doc/3/interactive/magics.html .

现在我正在管理循环,我将在其中定义大量变量,例如

for j in range(1000):
    a = crazy_function1()
    b = crazy_function2()
    ...
    m = crazy_function18()
    n = crazy_function19()
    ...
    z = crazy_functionN()

在每个周期结束时,我想删除除了 Python 工作区的标准变量和我引入的一些变量(在本例中只有 m 和 n)之外的所有变量。这将避免污染和内存负担,从而使代码更加高效和安全。

我看到“who_ls”结果看起来像一个列表,因此我认为在循环中删除所有不等于 m 或 n 的变量

for j in range(1000):
    a = crazy_function1()
    b = crazy_function2()
    ...
    m = crazy_function18()
    n = crazy_function19()
    ...
    z = crazy_functionN()
    if who_ls[j] != m or who_ls[j] != n:
         %reset_selective -f who_ls[j]

但它不起作用,因为 who_ls 看起来像一个列表,但它不起作用。您将如何修改最后几行代码? 有没有类似的东西

 %reset_selective -f, except variables(m, n)

?


限制变量范围的正常方法是在函数中使用它们。当函数完成后,它的locals消失。

In [71]: def foo():
    ...:     a=1
    ...:     b=2
    ...:     c=[1,2,3]
    ...:     d=np.arange(12)
    ...:     print(locals())
    ...:     del(a,b,c)
    ...:     print(locals())
    ...:     
In [72]: foo()
{'d': array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11]), 'c': [1, 2, 3], 'a': 1, 'b': 2}
{'d': array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])}

=================

%who_ls返回一个列表,并且可以在 RHS 上使用,如

xx = %who_ls

然后可以迭代该列表。但请注意,这是变量名称的列表,而不是变量本身。

for x in xx: 
    if len(x)==1:
        print(x)
        # del(x)  does not work

显示长度为 1 的所有名称。

=====================

简单的使用方法%reset_selective就是给临时变量一个独特的名称,例如正则表达式可以轻松找到的前缀。例如

In [198]: temp_a, temp_b, temp_c, x, y = 1,'one string',np.arange(10), 10, [1,23]
In [199]: who_ls
Out[199]: ['np', 'temp_a', 'temp_b', 'temp_c', 'x', 'y']
In [200]: %reset_selective -f temp 
In [201]: who_ls
Out[201]: ['np', 'x', 'y']

===================

下面是从名称列表中执行此删除操作的示例。请记住,我们尝试删除的实际变量与其名称之间存在差异。

创建一些变量和要删除的名称列表

In [221]: temp_a, temp_b, temp_c, x, y = 1,'one string',np.arange(10), 10, [1,23]
In [222]: dellist=['temp_a', 'temp_c','x']

拿到外壳,然后user_ns. who_ls使用来自的密钥self.shell.user_ns.

In [223]: ip=get_ipython()
In [224]: user_ns=ip.user_ns

In [225]: %who_ls
Out[225]: ['dellist', 'i', 'ip', 'np', 'temp_a', 'temp_b', 'temp_c', 'user_ns', 'x', 'y']

In [226]: for i in dellist:
     ...:     del(user_ns[i])
     ...:     
In [227]: %who_ls
Out[227]: ['dellist', 'i', 'ip', 'np', 'temp_b', 'user_ns', 'y']

所以我们必须在user_ns字典以便删除它们。请注意,此删除代码创建了一些变量,dellist, i, ip, user_ns.

=============

您担心多少变数?他们多大?标量、列表、numpy 数组。十几个可以用字母命名的标量不会占用太多内存。如果变量的生成存在任何模式,则将它们收集在列表或字典中可能更有意义,而不是尝试为每个变量赋予唯一的名称。

一般来说,最好使用函数来限制变量的范围,而不是使用del() or %reset。有时,如果处理非常大的数组,即占用一兆内存并可能产生内存错误的数组,我可能会使用del要不就a=None删除它们。但普通变量不需要特别注意(即使在ipython会话会持续几天)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:删除除一个for循环之外的所有变量而不受到污染 的相关文章

  • 错误只有 size-1 数组可以转换为 Python 标量

    我有这个代码 for a in data X for i in a if not i isdigit x hash i data X column row x row row 1 row 0 column column 1 desired
  • 如何将经度和纬度转换为国家或城市?

    我需要将经度和纬度坐标转换为国家或城市 python中有这样的例子吗 提前致谢 我使用谷歌的API from urllib2 import urlopen import json def getplace lat lon url http
  • Python中#和"""注释的区别

    开始用 Python 编程 我看到一些带有注释的脚本 and comments 这两种评论方式有什么区别 最好的事情就是阅读PEP 8 Python 代码风格指南 https www python org dev peps pep 0008
  • 垂直线 axvline 在 matplotlib 的 loglog 图中绘制位于错误位置的线

    我在使用 axvline 在 matplotlib 的 loglog 图中绘制垂直线时遇到问题 第一个问题是垂直线没有出现在正确的位置 第二个问题 可能相关的是 当我放大或平移绘图时 垂直线只是保持在原位 并且没有通过平移 滑动绘图 或放大
  • 01 无效令牌[重复]

    这个问题在这里已经有答案了 嘿 学习 python3有一段时间了 遇到字典和dictionary name get 方法并尝试获取随机键值 问题 data data get key 1 它有效并且返回 1 但如果我使用data get ke
  • Python 中的二进制相移键控

    我目前正在编写一些代码 以使用音频转换通过激光传输消息 文件 和其他数据 我当前的代码使用 python 中 binascii 模块中的 hexlify 函数将数据转换为二进制 然后为 1 发出一个音调 为 0 发出不同的音调 这在理论上是
  • Python:如何重构循环导入

    我有件事可以帮你做engine setState
  • Python 3.x 中的 PIL ImageTk 等效项

    我正在使用 Tkinter 开发一个应用程序 它使用以下数据库png图标的图像文件 为了在应用程序中使用所述图像 我使用 PIL 打开它们Image open 运行它通过ImageTk PhotoImage函数 然后将其传递给小部件构造函数
  • Python NLP 英式英语与美式英语

    我目前正在用Python 进行NLP 工作 然而 在我的语料库中 既有英式英语也有美式英语 实现 实现 我正在考虑将英式英语转换为美式英语 但是 我没有找到一个好的工具 包来做到这一点 有什么建议么 我也找不到包 但试试这个 请注意 我必须
  • 将 JSON 字符串传递给 Django 模板

    我一直在用头撞墙 试图找出为什么我无法将从 Django 模型生成的 JSON 字符串传递到模板的 javascript 静态文件中 事实证明 问题不在模型级别 使用serializers serialize 在脚本本身中放入相同的字符串将
  • 出现意外的关键字参数“timeout”(Python 中的 google-cloud-storage)

    使用 google cloud storage 的 Python 项目在本地运行良好 但是当它从 App Engine 运行时 会显示错误 Traceback most recent call last File opt python3 7
  • 超时时杀死或终止子进程?

    我想尽可能快地重复执行子进程 然而 有时这个过程会花费太长的时间 所以我想杀死它 我使用 signal signal 如下所示 ppid pipeexe pid signal signal signal SIGALRM stop handl
  • 如何在Python中获取绝对文件路径

    给定一条路径 例如 mydir myfile txt 如何在Python中找到文件的绝对路径 例如 在 Windows 上 我最终可能会得到 C example cwd mydir myfile txt gt gt gt import os
  • 指定 Parquet 属性 pyspark

    如何在 PySpark 中指定 Parquet 块大小和页面大小 我到处搜索 但找不到任何有关函数调用或导入库的文档 根据火花用户档案 https mail archives apache org mod mbox spark user 2
  • 从文档字符串生成 sphinx 文档不起作用

    我有一个具有以下结构的项目 我想保留 my project build here is where sphinx should dump into requirements txt make bat Makefile more config
  • 将带有两层分隔符的字符串转换为字典 - python

    给定一个字符串 s x t1 ny t2 nz t3 我想转换成字典 sdic x 1 y 2 z 3 我通过这样做让它工作 sdic dict tuple j split t for j in i for i in s split n F
  • 如何在 Spyder IDE 中安装 Selenium 包

    我刚刚在工作中安装了 Spyder IDE 仅 Spyder 不是整个 Anaconda 并且希望使用 FireFox 自动化我的工作 我的问题是 如何安装 Selenium 软件包 I figured it out Here is ins
  • if/else 在 while 循环内正确缩进[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我开始学习 Python 编程大约几周了 我遇到了一些麻烦 下面的代码是一个小程序 用于检查列表中是否有偶数 如果找到第一个偶数
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • 如何获取所有Python标准库模块的列表?

    我想要类似的东西sys builtin module names标准库除外 其他不起作用的事情 sys modules 只显示已经加载的模块 sys prefix 包含非标准库模块并且似乎无法在 virtualenv 内工作的路径 我想要这

随机推荐

  • 调整 Google 地图标记图标图像的大小

    当我将图像加载到标记的图标属性中时 它会以其原始尺寸显示 这比应有的尺寸要大得多 我想将标准尺寸调整为较小尺寸 做这个的最好方式是什么 Code function addMyPos latitude longitude position n
  • 在 HTML 和 CSS 中更改表格中行的颜色

    尝试学习 HTML 和 CSS 我有一个简单的问题 如何为表格中的每一行指定不同的颜色 例如 第 1 行是红色 第 2 行是蓝色等 这是我的 HTML 代码 table font family Arial Helvetica sans se
  • 如何使用Python的FastFM库(因子分解机)进行推荐任务?

    我有一个数据集
  • 使用 PDO MySQL 编译 PHP 5.1.6

    我本来在 ServerFault 上问了这个问题没有得到任何回应 我认为它与编程相关 所以 这里 不久前 我们的一个大客户转向了一家托管提供商 该提供商指定了一个在所有实时服务器上保持一致的软件环境 其中包括 Apache 2 2 8 和
  • Gnu 汇编器 (GAS) 中的 CFI 指令有何用途?

    每行后面似乎都有一个 CFI 指令 并且这些指令也有很多种 例如 cfi startproc cfi endproc etc 更多这里 file temp c text globl main type main function main
  • 如何将无主键实体插入表?

    我正在使用 15 年历史的数据库 现在我们的场景是数据库优先 将实体插入主无键表 我阅读了很多 microsoft EF Core 文档 例如https learn microsoft com en us ef core modeling
  • PHP 中的 HTML 表单

    我正在用 php 脚本编写 html 表单代码 这里是 但提交网址后看起来像这样localhost codejudge submit php 但应该是这样的localhost codejudge submit php id STR 如果一个
  • Spring MVC,配置的两个实例而不是一个

    我开始学习Spring MVC 我试图摆脱所有 Spring XML 配置 这是我的 web xml
  • 我可以直接从 Swift 使用 C++ 吗?

    我想为 iOS 和 Android 本机创建一个应用程序 我过去使用过 Xamarin 现在不想再使用它了 所以我的下一个选择是用 C 编写共享代码 可以在两者上编译原生平台 现在我想知道是否可以直接从 Swift 使用 C 我发现的唯一解
  • 使用SVG动态绘制多个圆弧

    我有 SVG 图像 代码如下
  • C++中STL集的底层数据结构是什么?

    我想知道C 中集合是如何实现的 如果我要实现自己的集合容器而不使用 STL 提供的容器 那么完成此任务的最佳方法是什么 我理解STL集是基于二叉搜索树的抽象数据结构 那么底层的数据结构是什么呢 数组 另外 如何insert 为一组工作 se
  • 使用环境为ng服务设置proxy.config.js属性

    标题几乎概括了这一点 我有一个 proxy conf js 文件被点击ng serve我只是想从环境 ts 文件或 json 文件中获取目标 url 或者我现在并不关心 我只是想要一个地方来存储分别为其他文件提供的 URL So envir
  • MongoDB 更新嵌套数组

    我在 mongodb 中有一个简单的结构 带有嵌套数组 如何更新搜索值 我见过使用数字的示例 如下所示 invited 0 used true 但这不是我要搜索的内容 因为我不知道这个元素在列表中的哪个位置 所以如何将 key 为 8402
  • 不同时区的时间数组的时间戳相减

    我从其他人那里得到了以下有类似问题的代码 但提出的解决方案不适用于我的 DataFrame 该代码从给定日期中减去 Pandas DataFrame 索引 my date pd datetime today MyDF day differe
  • iOS 10 collectionView:prefetchItemsAt 未调用

    我正在尝试新的collectionView prefetchItemsAt and collectionView cancelPrefetchingForItemsAt的方法UICollectionViewDataSourcePrefetc
  • 当 Collection 数据源更新时更新 ListView

    我有 ListView 我将其绑定到 Dictionary 集合 但是新的新项目添加到集合中 列表视图没有更新 在 WPF 中如何实现这一点 WPF 绑定双方都应该支持INotifyCollectionChanged接口以通知集合更改 词典
  • opencv-tkinter 集成中视频闪烁

    我正在尝试通过将 opencv 组件集成到程序中 在 Windows 8 上的 Python 3 6 4 64 位中使用 tkinter 构建 GUI 我可以播放视频 但出现明显的闪烁 也就是说 与本机 tkinter 背景颜色相同的屏幕每
  • 使用 $.ajax 调用服务器端函数

    最终 我想通过单击按钮将值发送到服务器并查询我的数据库 目前 我在使用 jquery ajax 调用服务器端的函数时遇到问题 这是我的代码
  • PDO fetchObject() 在 fetchall() 之后。返回错误

    我是 PHP 新手 我正在尝试以表格的形式显示员工的详细信息 但while row result gt fetchObject 部分没有执行 因为 result gt fetchObject 返回 false 有什么关系吗 rows res
  • Python:删除除一个for循环之外的所有变量而不受到污染

    reset reset f and reset selective a reset selective f a 是 Matlab 命令 清除所有 的有用 Python 替代品 其中 f 表示 强制而不要求确认 selective 可以与 w