请考虑以下代码:
a = [... for i in input]
i = a.index(f(a))
Run Code Online (Sandbox Code Playgroud)
我想知道我是否能够做一个单行班.显而易见的尝试是:
i = [... for i in input].index(f([... for i in input]))
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案需要生成两次列表.不太明显的尝试是:
i = [ a.index(f(a)) for a in [[... for i in input],] ]
Run Code Online (Sandbox Code Playgroud)
这诀窍,但使代码真的很奇怪.
这让我想到可能有可能以某种方式使用列表理解生成的列表,在自己的方法调用中.有点像(两者都不起作用,显然):
i = [... for i in input].index(f(_))
# or
i = [... for i in input].index(f(self))
Run Code Online (Sandbox Code Playgroud)
可以吗?
使用python2.7我发现了一个奇怪的时间执行情况:
data = dict( zip( a[0].split( ':' ), a[1].split( ':' ) ) )
data = { name: value for name, value in zip(a[0].split( ':' ), a[1].split( ':' )) }
Run Code Online (Sandbox Code Playgroud)
这两个电话对我来说似乎完全一样,但是,我发现字典理解版本的速度提高了约4% - 不是太多,而是非常稳定.
这是真的,如果是的话,为什么?还是只是我的想象力?