我有一个列表列表,每个内部列表的长度是1或n(假设n> 1).
>>> uneven = [[1], [47, 17, 2, 3], [3], [12, 5, 75, 33]]
Run Code Online (Sandbox Code Playgroud)
我想转置列表,但不是截断较长的列表(如同zip)或填充较短的列表None,我想用他们自己的奇异值填充较短的列表.换句话说,我想得到:
>>> [(1, 47, 3, 12), (1, 17, 3, 5), (1, 2, 3, 75), (1, 3, 3, 33)]
Run Code Online (Sandbox Code Playgroud)
我可以通过几次迭代来做到这一点:
>>> maxlist = len(max(*uneven, key=len))
>>> maxlist
4
>>> from itertools import repeat
>>> uneven2 = [x if len(x) == maxlist else repeat(x[0], maxlist) for x in uneven]
>>> uneven2
[[1, 1, 1, 1], [47, 17, 2, 3], [3, 3, 3, 3], …Run Code Online (Sandbox Code Playgroud) 尝试使用XCode版本4.4.1(4F1003)在MountainLion上构建mod_auth_openid,我收到有关缺少'cc'命令的投诉,如下所示:
/usr/share/apr-1/build-1/libtool --silent --mode=link /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc -o mod_auth_openid.la -rpath /usr/libexec/apache2 -module -avoid-version libmodauthopenid.la -I/usr/include/apache2 -I/usr/include/apr-1 -I/usr/local/include -L/usr/local/lib -lopkele -lcurl -lexpat -ltidy -lssl -lcrypto -lz -L/usr/lib -lpcre -lcurl
/usr/share/apr-1/build-1/libtool: line 4574: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc: No such file or directory
apxs:Error: Command failed with rc=8323072
Run Code Online (Sandbox Code Playgroud)
该怎么办?
在研究codereview问题时,我注意到了JSLint的一个有趣结果.JSLint抱怨在定义变量之前使用了变量.这是一个产生相同结果的缩短版代码:
(function () {
try {
var a = 0;
throw { name: "fakeError" };
} catch (e) {
a = 1;
}
}());
Run Code Online (Sandbox Code Playgroud)
我对JavaScript的理解说上面的代码应该等同于:
(function () {
var a;
try {
a = 0;
throw { name: "fakeError" };
} catch (e) {
a = 1;
}
}());
Run Code Online (Sandbox Code Playgroud)
实际上,a当通过Firebug运行时,这两个示例都不会导致存在于全局范围内.我看了一下ECMA-262规范的第12.14节,但是我没有看到任何会让我认为应该区别对待功能的东西.这只是JSLint中的一个错误,还是两个表达式在功能上有所不同?
Magento有一个丰富的销售模块,有很多选项,而且它有很好的文档记录高级别的东西,但是当涉及微妙的区别时我会被困住.我正在尝试整理一些订单分析软件,但我无法确切地知道Magento订单的小计和baseSubtotal是如何不同的,我也无法找到该级别的详细信息的API文档.
我能找到的唯一东西是在源代码中app/code/core/Mage/Sales/Model,但它似乎表明值总是相同的.
Order/Creditmemo/Total/Subtotal.php: $creditmemo->setSubtotal($subtotal);
Order/Creditmemo/Total/Subtotal.php: $creditmemo->setBaseSubtotal($baseSubtotal);
Order/Invoice/Total/Subtotal.php: $invoice->setSubtotal($subtotal);
Order/Invoice/Total/Subtotal.php: $invoice->setBaseSubtotal($baseSubtotal);
Quote.php: $this->setSubtotal(0);
Quote.php: $this->setBaseSubtotal(0);
Quote.php: $address->setSubtotal(0);
Quote.php: $address->setBaseSubtotal(0);
Quote.php: $this->setSubtotal((float) $this->getSubtotal() + $address->getSubtotal());
Quote.php: $this->setBaseSubtotal((float) $this->getBaseSubtotal() + $address->getBaseSubtotal());
Recurring/Profile.php: ->setBaseSubtotal($billingAmount)
Recurring/Profile.php: ->setSubtotal($billingAmount)
Run Code Online (Sandbox Code Playgroud)
他们有没有不同,如果是的话,怎么样?
Python的日志记录功能允许您传递多个可以为您插入的参数.所以你有一个选择:
logger.info("Something %s this way comes!" % "wicked")
Run Code Online (Sandbox Code Playgroud)
要么
logger.info("Something %s this way comes!", "wicked")
Run Code Online (Sandbox Code Playgroud)
但为什么选择一个而不是另一个呢?这只是在记录器中发生错误而不是在正在记录的程序中发生错误,还是还有其他问题?
我想在远程服务器上执行以下命令:
git archive --prefix="$tag/" --remote="ssh://$gitserver/var/git/$repo" "$tag" | tar -xvf-
Run Code Online (Sandbox Code Playgroud)
问题是我不知道是什么$tag.它应该是git describe --abbrev=0最新克隆的输出,但我不知道如何在不进行存储库的本地克隆的情况下获取该信息.是否可以在不制作本地克隆的情况下执行此操作?
我偶然发现了这种奇怪的现象并且无法弄清楚它为什么会起作用:
$ for ((i=0;i<8;i++)) {
> printf '%d...' "$i";
> }; echo
0...1...2...3...4...5...6...7...
Run Code Online (Sandbox Code Playgroud)
一个for在使用bash循环括号语法?我根本无法使用非算术for循环重现这一点,并且manpage和help两者似乎都需要do:
$ help for
<SNIP>
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
Arithmetic for loop.
Equivalent to
(( EXP1 ))
while (( EXP2 )); do
COMMANDS
(( EXP3 ))
done
Run Code Online (Sandbox Code Playgroud)
嗯,如果我只是......
$ ((i=0)); while ((i<8)) { printf '%d...' "$i"; ((i++)); }
-bash: syntax error near unexpected token `{'
Run Code Online (Sandbox Code Playgroud)
不!
这是支撑for-loop语法吗?
def a(n):
return max([len(n)] + [a(i) for i in n]) if isinstance(n, list) else 0
Run Code Online (Sandbox Code Playgroud)
这是我最近的一次测试,我无法让列表理解得失败.所以基本上这个函数应该返回最大列表的长度(这是我假设基于正确的答案)我会理解,如果不是这部分函数:
+ [a(i) for i in n])
Run Code Online (Sandbox Code Playgroud)
当我看到那个部分时,看起来它增加了迭代的列表长度.有人可以阐明那部分的目的吗?更具体地说,添加的原因.
编辑:所以仔细看之后......看起来函数将第一个列表的长度放在一个列表中,然后放下下一个列表的长度并返回最大值?...这是如何工作的?
我想看看shlex对于我正在尝试构建的东西是否是一个很好的选择,所以我想我会把它放在调试模式下来玩它.只有,shlex的构造函数有这样奇怪的事情:它设置self.debug为0然后立即检查它是否为真.
…
self.debug = 0
self.token = ''
self.filestack = deque()
self.source = None
if self.debug:
print 'shlex: reading from %s, line %d' \
% (self.instream, self.lineno)
Run Code Online (Sandbox Code Playgroud)
我知道Python有一些强大的元编程功能,但我无法弄清楚它是如何工作的 - 即使我覆盖了构造函数,也没有编程方法来设置值和它的使用.
是否应该有一种方法在if self.debug条件中输出语句(如果是,如何?),它是一个错误,还是有一些我没有考虑的第三种可能性?
我对这次扩张感到惊讶:
$ echo "${foo:~abc}"
Run Code Online (Sandbox Code Playgroud)
foo未设置时产生空字符串.我希望它会像这样解析:
$ echo "${foo:(~abc)}"
Run Code Online (Sandbox Code Playgroud)
并产生字符串"~abc".但是,相反,我发现,如果我做了定义
$ foo='abcdefg'
$ echo "${foo:~abc}"
g
Run Code Online (Sandbox Code Playgroud)
实际上,它在算术上下文中做了"abc"."${foo:~0}".同样
$ foo='abcdefg'
$ echo "${foo:~3}"
defg
Run Code Online (Sandbox Code Playgroud)
它可以获得扩展的最后n + 1个字符.我查看了联机帮助页的"参数扩展"部分.我没有看到那里的波浪.Bash Hackers Wiki仅提到了tildes(也是未记录的)案例修饰符.
这种行为至少可以回到3.2.57.
我只是遗漏了记录这种形式的子串扩展的地方,还是根本没有记录?