モジュールはdis
、コードが内部でどのように実行されるかについてのアイデアを提供します...
dis.dis(lambda a: [x + 1 for x in a])
収量...
1 0 BUILD_LIST 0
3 LOAD_FAST 0 (a)
6 GET_ITER
>> 7 FOR_ITER 16 (to 26)
10 STORE_FAST 1 (x)
13 LOAD_FAST 1 (x)
16 LOAD_CONST 1 (1)
19 BINARY_ADD
20 LIST_APPEND 2
23 JUMP_ABSOLUTE 7
>> 26 RETURN_VALUE
...そしてdis.dis(lambda a: tuple(x + 1 for x in a))
収量...
1 0 LOAD_GLOBAL 0 (tuple)
3 LOAD_CONST 1 (<code object <genexpr> at 0x7f62e9eda930, file "<stdin>", line 1>)
6 MAKE_FUNCTION 0
9 LOAD_FAST 0 (a)
12 GET_ITER
13 CALL_FUNCTION 1
16 CALL_FUNCTION 1
19 RETURN_VALUE
...しかし、そこから多くを推測することはできないかもしれません。どちらが速いか知りたい場合は、timeit
モジュールをチェックしてください。