Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Append Magic

Author: @vaaaaanquish

Pythonのリストのappendメソッドのトリックを使ったワンライナー問題

(x:=[[]]*3)[0].append(1);x

実行

uv run pythonでREPLを起動して、上記を貼り付けて実行するのが最も簡単です。

REPLの一部機能を再現して実行する以下のスクリプトでも、同じ結果が得られます。

uv run python -c 'import sys, ast as A
src = sys.stdin.read()
mod = A.parse(src, "<stdin>", "exec")

class Echo(A.NodeTransformer):
    def visit_Expr(self, node):
        assign = A.Assign(targets=[A.Name("_", A.Store())], value=node.value)
        pr = A.Expr(
            value=A.Call(func=A.Name("print", A.Load()),
                         args=[A.Call(func=A.Name("repr", A.Load()),
                         args=[A.Name("_", A.Load())], keywords=[])],
                         keywords=[]))
        return [assign, pr]

mod = Echo().visit(mod)
A.fix_missing_locations(mod)
exec(compile(mod, "<stdin>", "exec"), {})
' < main.py

解説

explanation.mdで解説しています