阿里云做网站买什么软件,什么是软件开发平台,网上开公司一般多少钱,郑州软件app开发公司列表推导与生成器表达式都可以用于初始化元组、数组或其他类型的序列。但列表推导需要先建立一个完整的列表#xff0c;然后再把这个列表传递到某个构造函数。而生成器表达式会逐个产出元素#xff0c;这样显然能够节省内存。列表推导写法#xff1a;codes [ord(symbol) fo…列表推导与生成器表达式都可以用于初始化元组、数组或其他类型的序列。但列表推导需要先建立一个完整的列表然后再把这个列表传递到某个构造函数。而生成器表达式会逐个产出元素这样显然能够节省内存。列表推导写法codes [ord(symbol) for symbol in symbols]x tuple(codes)生成器表达式写法x tuple(ord(symbol) for symbol in symbols)从这个示例中可以看出生成器表达式比列表推导减少了创建 codes 变量的内存损耗。还可以看出生成器表达式的语法跟列表推导相似但更简洁因为省略了方括号。这是生成器表达式的省略语法模式。语法规则如下如果生成器表达式是一个函数的唯一入参(比如示例中的 tuple 函数)那么就可以省略外层的圆括号。如果生成器表达式不是一个函数的唯一入参即这个函数有多个入参那么就必须使用圆括号包起生成器表达式然后再传入函数。生成器表达式最大的好处就是减少内存损耗。假设我们要计算两个各含有 1000 个元素列表的笛卡儿积使用生成器表达式就可以减少一个包含 100 万个元素的列表所占用的内存。这一点很像 Java 中的流式编程。比如说有一个球袋里面装着红、黄与绿三种颜色的球每种球又分为小、中、大三种规格。那么这个球袋里就会有 9 种组合。colors [红, 黄, 绿]sizes [小, 中, 大]for ball in (%s %s % (c, s) for c in colors for s in sizes):logging.info(ball)运行结果INFO - 红 小INFO - 红 中INFO - 红 大INFO - 黄 小INFO - 黄 中INFO - 黄 大INFO - 绿 小INFO - 绿 中INFO - 绿 大