小编Nat*_*ush的帖子

python中一行lambda函数中的条件语句?

如果以前曾经问过这个问题,我会道歉,但我无法在任何地方看到它.

基本上我遇到过一个场景,我需要在lambda函数中使用if语句.困难之处在于理想情况下它需要在一行代码中(如果可能的话甚至可能?)

通常,我会这样写:

T = 250

if (T > 200):
    rate = 200*exp(-T)
else:
    rate = 400*exp(-T)

return (rate)
Run Code Online (Sandbox Code Playgroud)

但是我需要它看起来像这样:

rate = lambda(T) : if (T>200): return(200*exp(-T)); else: return(400*exp(-T))
Run Code Online (Sandbox Code Playgroud)

我意识到更容易做的事情是在lambda函数之外做出决策,然后为每个case都有一个单独的lambda函数,但它不适合这里.lambda函数存储在一个数组中,并在需要时访问,每个数组元素对应一个特定的"速率",因此对于相同的"速率"有两个单独的行会弄乱.任何帮助将不胜感激,或如果它不可能,其他人的一些确认将是不错的:)

python lambda if-statement ternary-operator conditional-operator

57
推荐指数
5
解决办法
11万
查看次数

python 中变量名的迭代?

我有一组名为 k1、k2 k3....k52 的变量。根据场景,它们的变量是列表/numpy 数组。本质上,我想在一个循环中对它们进行相同的操作,但我在遍历它们时遇到了麻烦。本质上我想要的是这样的:

for i in arange(0,52):
  'k'+ str(i) = log10(eval('k' + str(i)))
Run Code Online (Sandbox Code Playgroud)

显然我知道上面的方法行不通,但它给出了这个想法。我的实际尝试是这样的:

for i in arange(0,10):

   rate = eval('k' + str(i))
   rate = np.array(rate,dtype=float)
   rate = log10(rate)
   rate.tolist()
   vars()[rate] = 'k' + str(i)
Run Code Online (Sandbox Code Playgroud)

(它更改为 numpy 数组,以便我可以记录它,然后返回列表,以便我将变量名称更改回原来的名称)感谢您提供的任何帮助。我感觉这很简单,但此刻我却想不起来。

编辑:非常感谢您的答案,我应该解释一下,我不能真正将它们存储在一个集合数组中,它们需要保留为独立变量,原因是我不想深入探讨。

python variables names

10
推荐指数
2
解决办法
2万
查看次数

计算python程序的CPU时间?

我想计算一段我的代码,我只想要CPU执行时间(忽略操作系统进程等).

我已经尝试过time.clock(),它看起来太不精确了,每次给出不同的答案.(理论上肯定的是,如果我再次为同一个代码片段运行它应该返回相同的值??)

我玩了约一个小时的timeit.基本上杀死它的是"设置"过程,我最终必须导入大约20个函数,这是不切实际的,因为我实际上只是将我的代码重新编写到设置部分以尝试使用它.

Cprofiles看起来越来越有吸引力,但它们是否会返回CPU时间?另外,一个小问题 - 它输出的信息太多了.有没有办法将输出的信息输入到txt或.dat文件中,以便实际读取它?

干杯

操作系统:Ubuntu程序:python 2.7

python profile cpu time execution

10
推荐指数
2
解决办法
2万
查看次数

在批处理文件中的文件路径目录中使用变量

我有一个相当简单的问题,但我无法在任何地方找到解决方案.

我正在处理批处理文件中的一些变量,我想根据变量更改目录.

例如,

variable SET /Jan2000 = a
cd P:\Reference\Data\2000\%a%
Run Code Online (Sandbox Code Playgroud)

当我运行批处理文件时,它只是停留在"2000"文件夹中,它不会像我问的那样进入下面的文件夹.有没有办法让这个工作?

编辑:根据请求,这是在批处理文件中编写的确切代码.谢谢您的帮助.

chdir /D P:\Reference\Data\2000
SET Jan2000 = a
chdir P:\Reference\2000\%a%   
dir
pause
Run Code Online (Sandbox Code Playgroud)

directory variables cmd path batch-file

8
推荐指数
2
解决办法
3万
查看次数

安装"Sundials"以使用Assimulo

首先,我应该说明我这样做的原因:我想尝试一些不同的微分方程求解器来比较我正在研究的项目的效率和内存使用情况.因此我想安装Assimulo因为它使用了一套求解器并且非常用户友好.

在安装之前,我发现我需要安装"日程":

https://computation.llnl.gov/casc/sundials/download/download.html

我下载了它,解压缩并使用"-fPIC"标志安装它,因为我使用的是64位ubuntu.安装"显示"已经正常,没有退出状态消息.

然后我使用这些说明安装了assimulo:

http://www.jmodelica.org/assimulo_home/installation.html

我指定"usr/local/lib"作为日程安装的路径,因为这是它在脚本运行时已经安装到终端的路径.

为了检查它是否正常工作,我下载并安装了鼻子进行鼻子测试,但是,它告诉我有什么问题.错误的一部分是:

======================================================================
ERROR: Failure: ImportError (No module named sundials)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/nose/loader.py", line 390, in            loadTestsFromName
    addr.filename, addr.module)
  File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 39, in      importFromPath
  return self.importFromDir(dir_path, fqname)
 File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 86, in importFromDir
 mod = load_module(part_fqname, fh, filename, desc)
 File "/usr/local/lib/python2.7/dist-packages/assimulo/tests/test_examples.py", line  21, in <module>
 from assimulo.examples import *
 File "/usr/local/lib/python2.7/dist-packages/assimulo/examples/cvode_gyro.py", line 22, in <module>
 from assimulo.solvers import CVode
 File "/usr/local/lib/python2.7/dist-packages/assimulo/solvers/__init__.py", line 23, in <module>
 from sundials import …
Run Code Online (Sandbox Code Playgroud)

python ubuntu install

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