我无法理解为什么Python没有sign函数.它有一个abs内置(我认为sign是它的妹妹),但没有sign.
在python 2.6中甚至有一个copysign函数(在数学中),但没有符号.copysign(x,y)当你只能写一个sign然后copysign直接从中获取时,为什么还要写一个abs(x) * sign(y)?后者会更加清晰:x带有y的符号,而对于copysign,你必须记住它的x是否带有y或y的符号,带有x的符号!
显然sign(x)不提供任何东西cmp(x,0),但它也会更具可读性(对于像python这样的高可读性语言,这本来是一个很大的优点).
如果我是一名蟒蛇设计师,那我就是另一种方式:没有cmp内置,而是一个sign.当你需要时cmp(x,y),你可以做一个sign(x-y)(或者,甚至更好的非数字的东西,只是一个x> y - 当然这应该需要sorted接受一个布尔而不是一个整数比较器).这也将更加清晰:正时x>y(而与cmp你必须记住公约正值当第一个是大,但它可能是周围的其他方式).当然cmp,由于其他原因(例如,在排序非数字事物时,或者如果您希望排序稳定,这是不可能使用简单的布尔值)
所以,问题是:为什么Python设计师决定将该sign功能从语言中删除?为什么麻烦copysign而不是它的父母sign呢?
我错过了什么吗?
编辑 - 在彼得汉森评论之后.很公平,你没有使用它,但你没有说你使用python的.在我使用蟒蛇的7年中,我无数次需要它,最后一根是打破骆驼背部的稻草!
是的,你可以通过cmp,但是我需要通过它的90%的时间都是这样的成语,就像
lambda x,y: cmp(score(x),score(y))用标志就好了.
最后,我希望你同意这sign会比这更有用copysign,所以即使我买了你的观点,为什么还要在数学中定义它而不是标志呢?copysign如何比签名更有用?
考虑以下:
me@mine:~$ cat a.sh
#!/bin/bash
echo "Lines: " $LINES
echo "Columns: " $COLUMNS
me@mine:~$ ./a.sh
Lines:
Columns:
me@mine:~$ echo "Lines: " $LINES
Lines: 52
me@mine:~$ echo "Columns: " $COLUMNS
Columns: 157
me@mine:~$
Run Code Online (Sandbox Code Playgroud)
变量$LINES和$COLUMNS是shell变量,不是环境变量,因而不会被导出到子进程(但会被自动更新,当我调整xterm窗口,通过SSH从远程位置登录,即使).有没有办法让我的脚本知道当前的终端大小?
编辑:我需要这个作为解决方法来解决这个问题:vi(以及vim,less和类似的命令)每次使用它时都会搞砸屏幕.更改终端不是一个选项,因此我正在寻找解决方法(向下滚动$LINES线肯定不是完美的解决方案,但至少比丢失前一个屏幕更好)
我一直在努力掌握支持向量机的基础知识,并下载和阅读了许多在线文章.但仍然无法掌握它.
我想知道,如果有的话
或者你可以想到的东西,这将使我能够轻松学习SVM基础知识.
PS:我以某种方式设法学习PCA(主成分分析).顺便说一句,你们猜想我正在研究机器学习.
如果是,在哪个操作系统,shell或其他什么?
考虑下面的java程序(我只是以java为例,任何语言对这个问题都有好处,更多的是关于操作系统):
public class ExitCode {
public static void main(String args[]) {
System.exit(Integer.parseInt(args[0]));
}
}
Run Code Online (Sandbox Code Playgroud)
在Linux和bash上运行它,它总是返回不等于255的值,例如(echo $?打印上一个执行命令的退出代码)
> java ExitCode 2; echo $?
2
> java ExitCode 128; echo $?
128
> java ExitCode 255; echo $?
255
> java ExitCode 256; echo $?
0
> java ExitCode 65536; echo $?
0
Run Code Online (Sandbox Code Playgroud)
编辑:下面的(只有,到目前为止)答案完全解释了在UNIX上发生的事情.我仍然想知道其他操作系统.
我正在开始一个小型/中型python项目,可能是在测试驱动开发中.我的背景更多是C和java而不是python(我使用了ant和makefile)
我知道在python中你可能不需要构建工具,但我会,因为我会使用cython和PyInstaller(这个东西应该在几个不同的UNIX上运行,而不是直接依赖于python)而且我想要方便从CLI中选择测试,构建文档,可能检查依赖关系等.
有人抱怨python缺乏类似make的工具.我知道很少有工具,比如scon和摊铺机,但我想听听真实用户而不仅仅是他们的网站.有人使用摊铺机吗?
什么是许多软件包附带的常见setup.py?我查看了一些,看看是否有一个常见的用法,但我没有发现任何有趣的东西(也许我使用了错误的例子)
你是否建议至少坚持使用我已经知道的东西(ant和Makefile)?如果是这样,你有没有为python推荐的ant扩展(+ cython + pyinstaller + pyUnit)?
编辑:为了避免像jwp那样的进一步答案,请注意,对于这个项目,我绝对需要我的程序是一个独立的可执行文件,因为绝对不可能在目标平台上运行可执行文件的python VM.我有完全相同的hw可用于编译,所以幸运的是我不需要交叉编译(但我会在更友好的Linux上进行开发).
我还想测试我的代码是否从一开始就在Cython中编译,而不是过早优化,但只是为了确保我不会使用不兼容的功能太过分,如果Cython需要进行痛苦的重构将是非常需要的.
所以请关注我的实际问题
很常见的情况,我打赌.你有一个博客或新闻网站,你有很多文章或blags或你称之为的任何东西,你想在每个网站的底部建议其他似乎相关的东西.
让我们假设每个项目的元数据非常少.也就是说,没有标签,类别.视为一大块文本,包括标题和作者姓名.
你如何找到可能相关的文件?
我对实际的算法很感兴趣,而不是现成的解决方案,虽然我可以看看在ruby或python中实现的东西,或者依赖于mysql或pgsql.
编辑:目前的答案还不错,但我想看到更多.对于一两件事,可能有一些非常简单的示例代码.
text information-retrieval machine-learning document-classification
我喜欢看我的git日志的方式
git log --graph --oneline --all --decorate
Run Code Online (Sandbox Code Playgroud)
除了我发现有用的输出之外,还有分支名称.但是,如果我删除了一个分支,那么上面的代码就不再显示了.我的意思是看到一堆像:
* 87c3294 (QueueExample) blah blah
Run Code Online (Sandbox Code Playgroud)
更具表现力(特别是当列表变长时)比一堆更具表现力
* 87c3294 blah blah
Run Code Online (Sandbox Code Playgroud)
这个问题的答案,特别是这个评论似乎意味着分支名称仍然"在某处".
如何在输出中git log或至少以其他方式打印它们?
或者,我如何从git分支的输出中删除分支,同时仍然保持它们的目的git log?
在调查了一点scrum和看板之后,我终于读到了这个答案并决定开始使用看板,从scrum中挑选一些东西(注意我主要是靠自己工作,而且我确实读过这个问题及其答案).
现在,我的问题是:哪种工具最适合入门?
关于每个的注释:
我倾向于白板,但有几个缺点(例如,无法制作自动图表,时间测量,指标,有时我在家工作 - 我最需要的地方 - 并且携带不方便:-)
我不想记住另一个用户名/密码(我答应自己只注册启用OpenID的服务)
我的雇主有JIRA,但我的团队没有使用它 - 我可能会要求一个帐户(它不应该需要另一个密码),也许以后可能会涉及其他人.但我不知道他们是否正在使用greenhopper,如果安装它是一件大事.
我一般都讨厌电子表格
也许是矫枉过正?
我很高兴有一个localhost实例,但是访问整个组(每个网络/防火墙)可能会有问题 - 不是一个交易破坏者,但肯定是一个问题
我想从中得到什么?
你有什么建议吗?
关于scrumish标签的注释:阅读Henrik Kniberg的PDF.他首先在第9页介绍了scrumish的定义.
请不要燃烧,要求作为社区维基,所以没有人在这里获得声誉.我知道python不是第一种具有列表理解能力的语言.我只是对这个名字的历史感兴趣.
我特别感兴趣的是为什么它被称为理解
我离线了(好吧,确切地说我的svn存储库现在无法访问),但是我有一个完全成熟的工作副本我就是,工作:-)
现在我需要知道文件的修订号.如何svn:keywords在离线时检查特定文件的修订号(顺便说一下,没有属性)?
我通常会检查他们svn ls -v或svn log | head或svn blame(当然他们更多比我在寻找现在).
python ×3
shell ×2
algorithm ×1
bash ×1
exit-code ×1
git ×1
kanban ×1
libsvm ×1
logging ×1
offline-mode ×1
pyinstaller ×1
revision ×1
scrum ×1
scrumboard ×1
svm ×1
svn ×1
tdd ×1
terminal ×1
text ×1
unit-testing ×1