怎样理解python数组中的for语句?

def f(x):
return(10*x)
a=[1,2,3]
b=[f(t) for t in a]
print(b)

结果:[10, 20, 30]
意思能够理解,但是我想知道编译器在读取b=[f(t) for t in a] 这一句是怎么拆解成一步步命令的?感觉很神奇,就这么一句就做了好多步骤。。。
谢谢

阅读 2.5k
1 个回答

了解一下堆栈虚拟机和字节码
python用dis模块将程序反编译为字节码对应的操作码。

>>> import dis

>>> def f(x):
    return(10*x)

>>> def x():
    a=[1,2,3]
    for i in a:
        b=f(i)
        print(b)

        
>>> dis.dis(x)
  2           0 LOAD_CONST               1 (1)
              3 LOAD_CONST               2 (2)
              6 LOAD_CONST               3 (3)
              9 BUILD_LIST               3
             12 STORE_FAST               0 (a)

  3          15 SETUP_LOOP              36 (to 54)
             18 LOAD_FAST                0 (a)
             21 GET_ITER
        >>   22 FOR_ITER                28 (to 53)
             25 STORE_FAST               1 (i)

  4          28 LOAD_GLOBAL              0 (f)
             31 LOAD_FAST                1 (i)
             34 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             37 STORE_FAST               2 (b)

  5          40 LOAD_GLOBAL              1 (print)
             43 LOAD_FAST                2 (b)
             46 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             49 POP_TOP
             50 JUMP_ABSOLUTE           22
        >>   53 POP_BLOCK
        >>   54 LOAD_CONST               0 (None)
             57 RETURN_VALUE
>>> 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题