在vim中执行的Python随机数列表

时间:2014-07-23 13:51:56

标签: python python-2.7 vim random

我想使用python命令在vim中创建一个随机数列表。

这很好用:

,!python -c "import random; print([random.uniform(1,10) for i in range(7)])"

但它会覆盖当前行,它不会在新行上添加每个数字,也无法格式化输出
我知道我可以使用类似print '%04.3f' %的内容,但它会使用当前缓冲区扩展%

如何打印到新行,将每个数字添加到新行并格式化输出值(在当前缓冲区中)?
这一切都来自vim命令行(我不想使用外部python脚本)。

PS:
我知道您使用reltime()reltimestr也在vim中创建了随机数,但我注意到它不是随机的,随机的,python会更快地生成数字。

1 个答案:

答案 0 :(得分:1)

使用:r!命令插入命令的结果而不是替换。

:r!python -c "import random; print('\n'.join(str(random.uniform(1,10)) for i in     range(7)))"

NB。稍微修改了Python代码以打印多行。

  • 使用生成器表达式和str.join
  • 我应该将float转换为str以使用str.join

要使用str % ...,您需要使用反斜杠转义%

:r!python -c "import random; print('\n'.join('\%04.3f' \% random.uniform(1,10) for i in range(7)))"

或者,您可以使用str.formatformat代替% operator

:r!python -c "import random; print('\n'.join('{:04.3f}'.format(random.uniform(1,10)) for i in range(7)))"