(),[] in python

xiaoxiao2026-09-01  19

初学python 看到(),[]认为是tuple和list而已,作为一个数组一个不能修改一个可以修改。不过由于python函数式表达的能力给()[]赋予了更强大的能力 一个是列表领悟,list comprehension, a = [x for x in range(100) if x%2==1] #1到100的奇数b = (x for x in range(100) if x%2==1) 看上去都是1到100的奇数,不过a是把整个list都生成了,而b只是产生一个generator 由于python还是一门命令式语言。在某些时候,用[]的方法,会严格按照应用序求值,会浪费很多时间空间。 而用()的方法,只是生成一个generator,这样就成了惰性求值,用到一点计算一点,丢弃一点 关于generator,也可以写在自己定义的函数里,使用yield关键字,在yield处返回值,下一次再从上次返回的地方继续 def inorder(t): if t: for x in inorder(t.left): yield x yield t.label for x in inorder(t.right): yield x 这是二叉树的中序遍历,像这种使用递归的方法的函数里,把函数转化成generator,直接用yield代替return就可以了
转载请注明原文地址: https://www.6miu.com/read-5052236.html

最新回复(0)