小编kra*_*lot的帖子

使用jk移动键在vim自动完成框中滚动

在vim中你可以开始输入一个单词,点击ctrl-n,弹出一个带有建议完成的框.我不喜欢将手移到箭头键以滚动此列表.有什么方法可以使用jk键向下/向上滚动吗?

vim autocomplete

22
推荐指数
2
解决办法
3303
查看次数

我可以在Python列表推导中使用别名来防止它们被多次评估吗?

我发现自己经常想写这样的Python列表理解:

nearbyPoints = [(n, delta(n,x)) for n in allPoints if delta(n,x)<=radius]
Run Code Online (Sandbox Code Playgroud)

这有希望给出一些关于我为什么要这样做的背景,但是也有一些情况需要为每个元素计算/比较多个值:

newlist = [(x,f(x),g(f(x))) for x in bigList if f(x)<p and g(f(x))<q]
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:

  1. 是否会多次评估所有这些函数还是缓存结果?语言是指定还是特定于实现?我现在使用2.6,但3.x会不同吗?
  2. 有没有更简洁的方式来写它?有时f和g是长表达式,重复是容易出错并且看起来很混乱.我真的希望能够写下这个:
newList = [(x,a=f(x),b=g(a)) for x in bigList if a<p and b<q]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.是否有充分的理由不支持这种语法?可以通过它有点像做这个?或者我只需要使用多个listcomp或for循环?

python alias list-comprehension

16
推荐指数
2
解决办法
4070
查看次数

标签 统计

alias ×1

autocomplete ×1

list-comprehension ×1

python ×1

vim ×1