小编Drp*_*ton的帖子

“迭代”单个项目的 Python 方式是什么?

我经常遇到这个问题,如果没有一些非常简单且Python式的单行解决方案,我会感到惊讶。

假设我有一个方法或函数,它将列表或其他可迭代对象作为参数。我希望对对象中的每个项目执行一次操作。

有时,仅将单个项目(例如浮点值)传递给此函数。在这种情况下,我的 for 循环不知道该怎么办。因此,我发现自己在代码中添加了以下代码片段:

from collections.abc import Sequence

def my_function(value):
   if not isinstance(value, Sequence):
      value = [value]

   # rest of my function
Run Code Online (Sandbox Code Playgroud)

这可行,但看起来很浪费而且不是特别清晰。在搜索 StackOverflow 时,我还发现字符串被视为序列,因此如果参数错误,这段代码很容易中断。这感觉不是正确的方法。

我有 MATLAB 背景,这个问题在该语言中得到了很好的解决,因为标量被视为 1x1 矩阵。我希望至少有一个内置的,类似于 numpy 的atleast_1d function 的东西,它会自动将任何东西转换为可迭代的(如果它不是可迭代的)。

python numpy

5
推荐指数
1
解决办法
223
查看次数

将 conda 与标准 python 打包工具(例如,requirements.txt 或 pyproject.toml 文件)结合起来的最佳方法是什么?

我从事科学计算工作,我实际上被迫使用 conda 安装某些其他维护的软件包来完成我的工作。如果我想使用自己的包,我需要一种方法让它能够与 conda 依赖解算器和 pip 很好地配合。我想简单地使用conda install本地包并使用 conda 依赖项求解器,以便它与其他软件兼容。但是,我还希望能够以其他方式pip install打包和/或将其上传到 PYPI。

有没有办法开发与 conda 环境兼容的标准化 python 包(使用例如pyproject.toml和/或文件)?requirements.txt我已经搜索过,但没有找到关于如何做到这一点的明确处方。

对于 conda,还可以 在本地*.yml文件中指定所需的依赖项,但此选项与通过 pip 安装不兼容。人们必须同时维护文件*.ymlrequirements.txt文件中的依赖关系。这种重复导致手动维护并且容易出错。

请注意,condadevelop命令是由anaconda官方支持的,从表面上看它可以用来解决这个问题;然而,它 实际上已被弃用,并且在撰写本文时,Python 3.11 似乎不支持它。

python pip conda pyproject.toml

3
推荐指数
1
解决办法
2092
查看次数

标签 统计

python ×2

conda ×1

numpy ×1

pip ×1

pyproject.toml ×1