Python однострочный (преобразование Perl в PyP)
Мне было интересно, возможно ли сделать однострочную с pyp, которая имеет такую же функциональность, как эта.
perl -l -a -F',' -p -e'if ($. > 1) { $F[6] %= 12; $F[7] %= 12;$_ = join(q{,}, @F[6,7]) }'
Это берет разделенный запятыми список чисел с 8 числами в строке и выводит его в том же формате, за исключением того, что последние два числа в каждой строке сокращаются по модулю 12. Он также дословно выводит первую строку (строку заголовка) первой.
У меня довольно много этих непонятных однострочников Perl, и я хотел бы в первую очередь перевести их все на Python.
1 ответ
Для записи, я не уверен, что одобряю. Написание кода по горизонтали не кажется мне намного лучше, чем написание по вертикали, и - по-дружески - я немного скептически отношусь к тому, что на практике это дает столько преимуществ, сколько может показаться. Одна из радостей 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
программа, которую я скачал около десяти минут назад.]