我没有在网上找到这个问题的答案,所以我会在前面说出来; 这是不是一个关于SublimeLinter问题,我不希望根据PEP8标准格式化我的Python代码.
如何禁用Python Checker包中的"Indentation contains tabs"警告?
有很多关于相对/绝对导入问题的帖子,其中大部分都是关于Python 2和/或导入子模块的.这不是我的情况:
import numpy一个脚本.我的问题很简单:
.
??? foo
??? a.py
??? math.py
1 directory, 2 files
Run Code Online (Sandbox Code Playgroud)
其中a.py只包含import nupmy和math.py包含x++(故意无效).
在这种情况下,python3 foo/a.py由于NumPy似乎无法导入标准math模块,因此运行会导致错误:
Traceback (most recent call last):
File "foo/a.py", line 1, in <module>
import numpy
File "/path/to/Anaconda3/lib/python3.6/site-packages/numpy/__init__.py", line 158, in <module>
from . import add_newdocs
File "/path/to/Anaconda3/lib/python3.6/site-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/path/to/Anaconda3/lib/python3.6/site-packages/numpy/lib/__init__.py", line 3, in <module>
import …Run Code Online (Sandbox Code Playgroud) 对不起,这听起来像是一个常见问题,就我看来,我无法找到问题的答案.最接近的帖子是这个:仅用于基本POD的模板专业化
假设我有一个类template <class T> class A {...};,我想将operator +重载为内部二元运算符(A类型的两个对象),并作为混合二元运算符(类型A和数字POD类型的对象).
理想情况下,我想写的是:
#include <type_traits>
using namespace std;
// Declare/fine template
template <class T> class A {...};
// Internal binary operator
template < class T, class U >
A< typename common_type<T,U>::type >
operator+ ( const A<T> &a, const A<U> &a ) { ... }
// Mixed binary operator
template < class T, class U >
A< typename common_type<T,U>::type >
operator+ ( const A<T> &a, const U &b ) { ... } …Run Code Online (Sandbox Code Playgroud) 当然,微优化是愚蠢的,可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情:
void function( const double& x ) {}
Run Code Online (Sandbox Code Playgroud)
代替:
void function( double x ) {}
Run Code Online (Sandbox Code Playgroud)
因为它被认为"更有效率".比方说,function经常在程序中被称为数百万次; 这种"优化"是否重要?
编辑您可以在Github上查看我的实现:https://github.com/Sheljohn/WalshHadamard
我正在寻找一个实现,或指示如何实现,顺序排序的 Fast Walsh Hadamard变换(参见本节和此).
我稍微调整了一个在线发现的非常好的实现:
// (a,b) -> (a+b,a-b) without overflow
void rotate( long& a, long& b )
{
static long t;
t = a;
a = a + b;
b = t - b;
}
// Integer log2
long ilog2( long x )
{
long l2 = 0;
for (; x; x >>=1) ++l2;
return l2;
}
/**
* Fast Walsh-Hadamard transform
*/
void fwht( std::vector<long>& data …Run Code Online (Sandbox Code Playgroud) 这是一个特定于C++ 11的问题.假设我std::vector<T> v已经使用了一个向量,并且我想将其大小调整为n使用现有值初始化的元素T val.(典型用例:vector是要回收的实例的成员).
以下方式的优缺点是什么,哪种方式最有效?
1)std::vector<T>::resize( n, val )初始化是否足够?
v.clear();
v.resize( n, val );
Run Code Online (Sandbox Code Playgroud)
2)如果没有,那么我假设以下是正确的?
v.clear();
v.resize(n);
std::fill( v.begin(), v.end(), val );
Run Code Online (Sandbox Code Playgroud)
3)交换怎么样?
v.swap( std::vector<T>( n, val ) );
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OSX上的g ++ 4.8在Matlab R2014b中编译Mex文件mexopts.sh。相关选项为:
-> CXX = g++
-> CXX flags:
CXXFLAGS = -ansi -D_GNU_SOURCE -std=c++0x -arch x86_64 -mmacosx-version-min=10.10 -fPIC -fno-omit-frame-pointer -pthread
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O2 -DNDEBUG
CXXLIBS = -Wl,-rpath-link,/path/to/MATLAB_R2014b.app/bin/maci64 -L/path/to/MATLAB_R2014b.app/bin/maci64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
Run Code Online (Sandbox Code Playgroud)
Mex发出的编译命令是:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
-> g++ -c -I/path/to/MATLAB_R2014b.app/extern/include -I/path/to/MATLAB_R2014b.app/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -std=c++0x -arch x86_64 -mmacosx-version-min=10.10 -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O2 -DNDEBUG "/path/to/myfile.cpp" -o /path/to/myfile.o
Run Code Online (Sandbox Code Playgroud)
我的问题是在第一线Configured with: ...,我想改变--prefix,并--with-gxx-include-dir为GCC相同的价值观:
sheljohn@computer$ g++ -v …Run Code Online (Sandbox Code Playgroud) Matlab Central上越来越多的软件包以附件或自定义工具箱(扩展.mltbx)的形式共享。
我正在使用这样的工具箱,当我在桌面上时,只需单击它们即可安装它们。但是,我的代码最终部署在群集上,在该群集上没有一个节点安装了这些工具箱,并且没有一个Matlab实例通过display运行。
如何以编程方式安装加载项?
是否有更多pythonic方式执行以下操作:
def mysteryFunction( it, fun, val ):
out = []
for x in it:
y,val = fun(x,val)
out.append(y)
return out,val
Run Code Online (Sandbox Code Playgroud)
where it是可迭代的,fun是一个接受两个输入并返回两个输出的函数,val是一个初始值,每次调用都会"转换" fun?
我问,因为我map, zip, filter, reduce经常使用和列表理解,但我无法将之前的功能表达为这些功能的组合,而这已经出现了好几次了.我错过了一个隐藏的习语,或者这只是一个适合自己的利基?
一个具体的例子是从一定的秒数计算(年,周,日,小时,分钟,秒)的持续时间:
fac = (365*24*3600, 7*24*3600, 24*3600, 3600, 60, 1)
dur,rem = mysteryFunction( fac, lambda x,y: divmod(y,x), 234567 )
Run Code Online (Sandbox Code Playgroud)
其中dur是持续时间元组,并且rem对应于最终余数(此处为零或小数,具体取决于初始值的类型).这不仅仅是挑选,还有许多其他的例子,例如:整合微分方程的固定步骤方法(可迭代步骤,步进函数,初始状态); 模拟有界随机游走; 深度的树处理没有递归; 等等