我想在几个不同的条件下在linux shell中执行一些东西,并能够输出每次执行的执行时间.
我知道我可以编写一个可以执行此操作的perl或python脚本,但有没有办法在shell中执行此操作?(恰好是bash)
如何从一组列表中获取笛卡尔积(每种可能的值组合)?
输入:
somelists = [
[1, 2, 3],
['a', 'b'],
[4, 5]
]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]
Run Code Online (Sandbox Code Playgroud) 假设你在vim中选择了一个区域.如何将其复制到OS X剪贴板中?
(提示:OS X剪贴板可以通过管道写入/usr/bin/pbcopy)
我从来不确定我理解str/unicode解码和编码之间的区别.
我知道这str().decode()是因为当你有一个字符串,你知道它有一定的字符编码,给定编码名称它将返回一个unicode字符串.
我知道unicode().encode()根据给定的编码名称将unicode字符转换为字符串.
但我不明白是什么str().encode(),unicode().decode()是为了什么.任何人都可以解释,并可能还纠正我上面遇到的任何其他错误吗?
编辑:
几个答案给出了.encode关于字符串上的内容的信息,但似乎没有人知道.decodeunicode 是做什么的.
如何在python中将字符串转换为int?
这样说: 'y\xcc\xa6\xbb'
我想出了一个聪明/愚蠢的方法:
sum(ord(c) << (i * 8) for i, c in enumerate('y\xcc\xa6\xbb'[::-1]))
Run Code Online (Sandbox Code Playgroud)
我知道必须有内置或标准库中的内容,这样做更简单...
这与转换可以使用int(xxx,16)的十六进制数字字符串不同,而是我想转换一串实际字节值.
更新:
我有点像詹姆斯的答案好一点,因为它不需要导入另一个模块,但Greg的方法更快:
>>> from timeit import Timer
>>> Timer('struct.unpack("<L", "y\xcc\xa6\xbb")[0]', 'import struct').timeit()
0.36242198944091797
>>> Timer("int('y\xcc\xa6\xbb'.encode('hex'), 16)").timeit()
1.1432669162750244
Run Code Online (Sandbox Code Playgroud)
我的hacky方法:
>>> Timer("sum(ord(c) << (i * 8) for i, c in enumerate('y\xcc\xa6\xbb'[::-1]))").timeit()
2.8819329738616943
Run Code Online (Sandbox Code Playgroud)
进一步更新:
有人在评论中询问导入另一个模块的问题是什么.好吧,导入模块不一定便宜,看看:
>>> Timer("""import struct\nstruct.unpack(">L", "y\xcc\xa6\xbb")[0]""").timeit()
0.98822188377380371
Run Code Online (Sandbox Code Playgroud)
包括导入模块的成本几乎抵消了该方法的所有优点.我相信这只会包括在整个基准测试中导入一次的费用; 看看我每次强迫它重装时会发生什么:
>>> Timer("""reload(struct)\nstruct.unpack(">L", "y\xcc\xa6\xbb")[0]""", 'import struct').timeit()
68.474128007888794
Run Code Online (Sandbox Code Playgroud)
毋庸置疑,如果你在每次导入时执行大量的这种方法,那么这个问题就会成比例地减少.它也可能是i/o成本而不是cpu,因此它可能取决于特定机器的容量和负载特性.
是否有任何理由unicode(somestring, 'utf8')相反somestring.decode('utf8')?
我唯一想到的是这.decode()是一个绑定方法,所以python可以更有效地解决它,但如果我错了,请纠正我.
为什么这段代码有时会产生ArrayOutOfBoundsException?怎么可能String.valueOf(int)呢?
public static String ipToString(ByteString bs) {
if (bs == null || bs.isEmpty()) {
return null;
} else {
StringBuilder sb = new StringBuilder();
boolean started = false;
for (Byte byt : bs) {
if (started) {
sb.append(".");
}
sb.append(String.valueOf(byt & 0xFF));
started = true;
}
return sb.toString();
}
}
java.lang.ArrayIndexOutOfBoundsException: -81914
at java.lang.Integer.getChars(Integer.java:458)
at java.lang.Integer.toString(Integer.java:402)
at java.lang.String.valueOf(String.java:3086)
at com.mystuff.mypackage.ipToString(MyCode.java:1325)
...
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
更新
当发生这种情况时,我不知道字节的值,但似乎不应该有任何可能的字节值.
一旦发生一次,每次调用都会以相同的异常出错.
环境:
Run Code Online (Sandbox Code Playgroud)java version "1.8.0_20" Java(TM) SE …
"统计不可能的短语"有什么用?
根据亚马逊的说法:
Amazon.com的统计上不可能的短语,或"SIP",是Search Inside!™计划中书籍文本中最独特的短语.为了识别SIP,我们的计算机扫描搜索内部的所有书籍的文本!程序.如果他们发现相对于所有搜索内部的特定书籍中出现了很多次的短语!书,那个短语是那本书的SIP.
SIP在某本书中并不一定不太可能,但相对于Search Inside中的所有书籍而言,它们是不可能的.例如,关于税收的书籍的大多数SIP都与税收相关.但是因为我们按照不可能性得分的顺序显示SIP,所以第一个SIP将涉及税务主题,本书比其他税书更频繁地提及.对于小说作品,SIP往往是独特的单词组合,经常暗示重要的情节元素.
例如,对于Joel的第一本书,SIP是:泄漏抽象,抗锯齿文本,自己的狗食,错误计数,每日构建,错误数据库,软件时间表
一个有趣的复杂因素是这些是2或3个单词的短语.这使事情变得更有趣,因为这些短语可以相互重叠或相互包含.
这是一个很好的,因为它是非常直观的:
想象一下,一个装满球的骨灰盒,其中三分之二是一种颜色,三分之一是另一种颜色.一个人从瓮中抽出5个球,发现4个是红色的,1个是白色的.另一个人抽出20个球,发现12个是红色的,8个是白色的.两个人中哪一个应该更有信心,瓮包含三分之二的红球和三分之一的白球,而不是相反?每个人应该承担多少赔率?
我知道正确的答案,但也许我没有得到赔率计算.谁能解释一下?