6

我想知道是否有可能用pyp制作一个与此功能相同的单行代码。

perl -l -a -F',' -p -e'if ($. > 1) { $F[6] %= 12; $F[7] %= 12;$_ = join(q{,}, @F[6,7]) }'

这接受一个逗号分隔的数字列表,每行有 8 个数字,并以相同的格式输出它,除了每行中的最后两个数字以 12 为模减少。它还首先逐字输出第一行(标题行)。

我有很多这些晦涩的 perl 单行代码,我想首先将它们全部转换为 python。

4

1 回答 1

4

作为记录,我不确定我是否同意。在我看来,水平编写代码并不比垂直编写代码好多少,而且——以一种友好的方式——我有点怀疑这在实践中是否提供了看起来那么多的优势。Python 的乐趣之一是您不再需要担心编写 GolfScript。

也就是说,怎么样:

pyp "mm | p if n==0 else (p[:-2] + [(int(x)%12) for x in p[-2:]]) | mm"

产生:

localhost-2:coding $ cat exam.pyp 
a,b,c,d,e,f,g,h
11,22,33,44,55,66,77,88
12,23,34,45,56,67,78,89
13,24,35,46,57,68,79,80
localhost-2:coding $ cat exam.pyp | pyp "mm | p if n==0 else (p[:-2] + [(int(x)%12) for x in p[-2:]]) | mm"
a,b,c,d,e,f,g,h
11,22,33,44,55,66,5,4
12,23,34,45,56,67,6,5
13,24,35,46,57,68,7,8

[免责声明:这是我大pyp约十分钟前下载的第一个程序。]

于 2013-05-04T20:50:48.737 回答