我发现了 2 个无分支函数,它们在 python 中查找两个数字的最大值,并将它们与 if 语句和内置 max 函数进行比较。我认为无分支或内置函数将是最快的,但最快的是 if 语句函数。有人知道这是为什么吗?以下是功能:
If 语句(25000 次操作需要 2.16 秒):
def max1(a, b):
if a > b:
return a
return b
Run Code Online (Sandbox Code Playgroud)
内置(25000次操作4.69秒):
def max2(a, b):
return max(a, b)
Run Code Online (Sandbox Code Playgroud)
Branchless 1(25000 次操作需要 4.12 秒):
def max3(a, b):
return (a > b) * a + (a <= b) * b
Run Code Online (Sandbox Code Playgroud)
Branchless 2(25000 次操作需要 5.34 秒):
def max4(a, b):
diff = a - b
return a - (diff & diff >> 31)
Run Code Online (Sandbox Code Playgroud) 在vim中,当我点击:wq它时几乎总是在尝试输入时发生的事故:w.我想禁用:wq.
我找到的最接近的是cmap,但它有一些奇怪的行为.如果我做的事情
:cmap wq w
Run Code Online (Sandbox Code Playgroud)
我甚至不能输入:wq; 它只是将击键序列重新映射wq到w命令模式.例如,我不能在包含的字符串上输入搜索/替换命令wq.
我只是想别名的准确命令:wq到:w或无操作.有没有办法做到这一点?
编辑:澄清为什么:cmap不是我的选择
一般来说,foldl避免赞成foldl'或foldr.引用真实世界Haskell:
由于foldl的thunking行为,在实际程序中避免这种功能是明智的:即使它没有完全失败,也会不必要地低效.相反,导入Data.List并使用foldl'.
然而,一些Prelude函数是根据它来定义的(例如(\\)和unionBy).为什么是这样?是不是对这些功能引入了太多的严格要求?
我注意到有一段时间,read如果没有文件的最后一行,那么它最后就不会读取一个"换行符".如果考虑到这一点,这是可以理解的,只要文件中没有"换行"字符,就好像它包含0行(这很难承认!).例如,请参阅以下内容:
$ echo 'foo' > bar ; wc -l bar
1 bar
Run Code Online (Sandbox Code Playgroud)
但...
$ echo -n 'bar' > foo ; wc -l foo
0 foo
Run Code Online (Sandbox Code Playgroud)
那么问题是:当我使用read处理尚未由我自己创建或修改的文件时,如何处理这种情况,以及我不知道它们是否真的以"换行符"结尾?
请帮我理解内置的os.path.join()函数是如何工作的.例如:
import os
print os.path.join('cat','dog') # 'cat/dog' no surprise here
print os.path.join('cat','dog').join('fish') # 'fcat/dogicat/dogscat/dogh'
Run Code Online (Sandbox Code Playgroud)
在Mac上(我猜Linux也是)os.name是posixpath的别名.所以查看posixpath.py模块,join()函数如下所示:
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded. An empty last part will result in a path that
ends with a separator."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += …Run Code Online (Sandbox Code Playgroud) 我最近从python 2切换到python 3. Python 3文档读取:" Removed reload().使用imp.reload() "它并没有真正说明为什么.
这个问题描述了它现在如何在python 3中完成.有没有人知道为什么它已从内置函数中删除,现在需要imp或importlib重新加载?在使用交互式提示构建程序时测试程序时,默认情况下重新加载程序非常方便.显然,我可以通过做类似的事情来解决这个问题
from imp import reload
Run Code Online (Sandbox Code Playgroud)
每次打开交互式提示测试代码时,它只是另一行代码.这种变化背后的原因是什么?
我想__init__.py通过以下方式为我的包的文件中的另一个函数分配另一个函数:
llen = len
len = lambda x: llen(x) - 1
Run Code Online (Sandbox Code Playgroud)
它工作正常,但只在__init__.py文件中.如何让它影响我的包中的其他模块?
Ubuntu Linux 15.10 - 我刚注意到没有手册页 cd
这看起来有点奇怪.
我试过了:
man cd
Run Code Online (Sandbox Code Playgroud)
在cmd线,我回来了
No manual entry for cd
Run Code Online (Sandbox Code Playgroud)
我试图找到文档
cd -
Run Code Online (Sandbox Code Playgroud)
这对于在最后一个目录和当前目录之间翻转非常方便
和 cd --
这似乎是别名
cd ~
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了一些非常明显的东西,或者手册页应该存在吗?
clang 和 GCC 有一个int __builtin_ctz(unsigned)功能。这会计算整数中的尾随零。关于这一系列函数的维基百科文章提到可以使用 加速二进制 GCD 算法__builtin_ctz,但我不明白如何。
二进制 GCD的示例实现如下所示:
unsigned int gcd(unsigned int u, unsigned int v)
{
// simple cases (termination)
if (u == v)
return u;
if (u == 0)
return v;
if (v == 0)
return u;
// look for factors of 2
if (~u & 1) // u is even
if (v & 1) // v is odd
return gcd(u >> 1, v);
else // …Run Code Online (Sandbox Code Playgroud) c++ algorithm bit-manipulation built-in greatest-common-divisor
我正在寻找一种方法将异常的可打印输出更改为愚蠢的消息,以便了解有关 python 内部结构的更多信息(并与朋友搞混;),但到目前为止还没有成功。
考虑以下代码
try:
x # is not defined
except NameError as exc:
print(exc)
Run Code Online (Sandbox Code Playgroud)
代码应输出 name 'x' is not defined
我希望将输出更改为the name 'x' you suggested is not yet defined, my lord. Improve your coding skills.
到目前为止,我明白你不能改变,__builtins__因为它们被“烘焙”为 C 代码,除非:
我已经尝试了两种解决方案,但没有成功:
禁果解决方案:
from forbiddenfruit import curse
curse(BaseException, 'repr', lambda self: print("Test message for repr"))
curse(BaseException, 'str', lambda self: print("Test message for str"))
try:
x
except NameError as exc:
print(exc.str()) # Works, shows test …Run Code Online (Sandbox Code Playgroud) built-in ×10
python ×5
command ×2
python-3.x ×2
shell ×2
algorithm ×1
bash ×1
branchless ×1
c++ ×1
haskell ×1
linux ×1
macos ×1
path ×1
performance ×1
python-2.7 ×1
reload ×1
remap ×1
shadowing ×1
ubuntu-15.10 ×1
vim ×1