我有时会发现自己想要占位符'什么也不做'lambda表达式,类似于说:
def do_nothing(*args):
pass
Run Code Online (Sandbox Code Playgroud)
但是以下语法是非法的,因为lambda表达式尝试返回冒号后面的内容,并且您无法返回pass
.
do_nothing = lambda *args: pass
Run Code Online (Sandbox Code Playgroud)
所以我想知道,以下表达式是否适合替代上述?
do_nothing = lambda *args: None
Run Code Online (Sandbox Code Playgroud)
由于do_nothing
上面的函数在技术上返回None
,是否可以创建一个返回None
用作占位符lambda表达式的lambda表达式?还是不好的做法?
我想配置Sublime Text 3来构建Python 3,但我似乎不明白构建是如何工作的.许多教程告诉我制作一个包含以下代码的构建文件:
{
'cmd': ['/usr/bin/python3', '-u', '$file'],
'file_regex': '^[ ]*File "(…*?)", line ([0-9]*)',
'selector': 'source.python'
}
Run Code Online (Sandbox Code Playgroud)
并将其保存为一个名为Python.sublime-build
或的文件python3.sublime-build
(我发现的大部分信息都是冲突的).一个教程建议在ST3 Packages文件夹中创建一个新文件夹,Python
并在其中添加构建文件,而其他教程建议将其保留在名为的文件夹中User
.
一个教程解释了我如何path
在操作系统上更改环境变量以使其工作.这似乎也没有帮助.
我添加了一个文件夹Python
到Packages
(因为它是不存在的话),并在名为构建文件添加Python.sublime_build
该功能只在我上面贴的代码.现在当我尝试运行Sublime Text时,它给了我这个错误:
Error trying to parse build system:
Expected value in Packages\Python\Python.sublime-build:2:5
Run Code Online (Sandbox Code Playgroud) 我一直在研究一个非常时间敏感的项目(不幸的是必须在python中),其中一个广泛使用的函数是一个计算(x,y)元组列表的质心的函数.为了显示:
def centroid(*points):
x_coords = [p[0] for p in points]
y_coords = [p[1] for p in points]
_len = len(points)
centroid_x = sum(x_coords)/_len
centroid_y = sum(y_coords)/_len
return [centroid_x, centroid_y]
Run Code Online (Sandbox Code Playgroud)
哪里
>>> centroid((0, 0), (10, 0), (10, 10), (0, 10))
[5, 5]
Run Code Online (Sandbox Code Playgroud)
这个函数运行得相当快,上面的例子在我的系统上平均完成了1.49e-05秒,但我正在寻找计算质心的最快方法.你有什么想法?
我遇到的其他解决方案之一是执行以下操作(l
元组列表在哪里):
map(len(l).__rtruediv__, map(sum, zip(*l)))
Run Code Online (Sandbox Code Playgroud)
它运行在1.01e-05和9.6e-06秒之间,但不幸的是转换为列表(通过包围整个语句list( ... )
)几乎使计算时间加倍.
编辑:建议在纯python中欢迎但不是numpy.
EDIT2:刚刚发现,如果为元组列表的长度保留一个单独的变量,那么我的上述实现map
在9.2e-06秒内可靠地运行,但仍然存在转换回列表的问题.
EDIT3:
现在我只接受纯蟒蛇的答案,而不是numpy(对那些已经在numpy中回答的人抱歉!)
我正在对一些python代码进行基准测试,我注意到了一些奇怪 我使用以下函数来测量迭代空for循环所需的速度:
def f(n):
t1 = time.time()
for i in range(n):
pass
print(time.time() - t1)
Run Code Online (Sandbox Code Playgroud)
f(10**6)
打印about 0.035
,f(10**7)
about 0.35
,f(10**8)
about 3.5
和f(10**9)
about 35
.但是f(10**10)
?好吧2000
.这当然是意料之外的.为什么迭代10倍的元素需要花费60倍的时间?什么是python的for循环导致这个?这是特定于python的,还是会出现在很多语言中?
我已经看到这个术语__loader__
浮动在一些Python文件中,除了一些关于它的目的的简短描述之外我找不到任何文档,但它们仍然没有为我提供足够的信息以便对它有一个很好的理解.我所知道的是它与导入模块有关,除此之外我完全不知所措.它有什么作用?什么时候使用?如果有的话我怎么用呢?
出于某种原因,我每次尝试在函数中定义元组时都会遇到语法错误.例如,我有一个向程序添加向量的函数,它看起来像这样:
def add_vectors((angle_1, l_1),(angle_2, l_2)):
x=math.sin(angle1)*l_1+math.sin(angle2)*l_2
y=math.cos(angle1)*l_1+math.cos(angle2)*l_2
angle=0.5*math.pi-math.atan2(y, x)
length=math.hypot(x, y)
return (angle, length)
Run Code Online (Sandbox Code Playgroud)
这似乎没问题,但解释者说有一个语法错误并突出显示第一个元组的第一个括号.我使用的是Python 3.2.3.我究竟做错了什么?
我正在尝试自学python字节码是如何工作的,所以我可以通过操作函数的代码来做一些事情(只是为了好玩,而不是用于实际用途)所以我从一些简单的例子开始,例如:
def f(x):
return x + 3/x
Run Code Online (Sandbox Code Playgroud)
字节码是*:
(124, 0, 0, 100, 1, 0, 124, 0, 0, 20, 23, 83)
Run Code Online (Sandbox Code Playgroud)
因此,它是有道理的,我认为124
是LOAD_FAST
字节码,并且正在加载的对象的名称是f.__code__.co_varnames[0]
这里0
后是多少124
.并100
表示LOAD_CONST
加载f.__code__.co_consts[1]
在那里1
是在数字后100
.但是有一堆辅助零,比如第二个,第三个和第五个零,似乎没有任何意义,至少对我而言.他们表示什么?
文本字节码:
>>> dis.dis(f)
2 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (3)
6 LOAD_FAST 0 (x)
9 BINARY_DIVIDE
10 BINARY_ADD
11 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)
*注意:在Python 3中(字节码可能与上面不同),可以通过以下方式找到字节码:
>>> list(f.__code__.co_code)
[124, 0, 100, 1, 124, 0, 27, 0, 23, 0, 83, 0]
Run Code Online (Sandbox Code Playgroud) 我正在处理一个 C++ 项目,该项目有一些自动生成的大段代码,我不想被 linted。是否有类似于//NOLINT
注释的东西可以应用于多行?像下面这样:
// BEGINNOLINT
bad-code;
// ENDNOLINT
Run Code Online (Sandbox Code Playgroud)
我在 Keras 中训练神经网络时遇到问题。每个 epoch,损失都会稳步下降,达到大约 1e-9,然后在 epoch 中间的某个地方(可能是任何地方),损失上升到 5e-5,并最终稳定在每个 epoch 相同的最终损失上。我相信这是由于我的数据集中的一些脏数据导致模型无法训练超过某个点,尽管我真的不确定。
为了测试我的假设,我想创建一个自定义的 Keras 回调对象,该对象将确定批次后的损失是否有足够大的跳跃,并指出哪个批次导致了跳跃。问题是batch
提供给的参数keras.callbacks.Callback.on_batch_end
只是批次编号,而不是该批次中使用的实际训练示例。此外,logs
传入的dict 也仅包含loss
和acc
。
这意味着我实际上无法确定哪些数据导致了损失的增加。有没有办法可以确定导致每个时期跳跃的确切训练示例?有什么方法可以在回调中访问它吗?
我正在尝试在Python中使用Essentia,我不能在我的生活中弄清楚如何安装它,我不知道安装页面中发生了什么.有人可以告诉我如何做到这一点?
python ×8
python-3.x ×3
benchmarking ×1
bytecode ×1
clang ×1
clang-tidy ×1
for-loop ×1
function ×1
install ×1
keras ×1
lambda ×1
loader ×1
performance ×1
sublimetext3 ×1
tensorflow ×1
tuples ×1