生成式 ( Comprehension ) 是 Python 的语法之一,可以运用在可迭代的物件上,只要撰写一行程式码就能完成多行的任务,大幅增加程式码的简洁性与可读性,这篇教学将会介绍串列生成式、字典生成式和集合生成式 ( 元组 tuple 并没有生成式,而是用类似生成式的方式产生 tuple )。
串列生成式只要撰写一行程式码,就能快速产生一个串列,其语法为:
下方的程式码里,如果要产生一个 1~9 数字平方的串列,除了可以单纯透过 for 循环搭配串列,也可以使用串列生成式来实现,串列生成式里“[j*j for j in range(110)]”,会依序取出 1~9 的数字,然后提供给最前方的 j,最后生成 jxj 的结果。
再看一个例子:“有一个 a 串列,接着要建立一个 b 串列,b 串列每个内容项目是 a 串列的最大值减去其他项目的值”,这时使用串列生成式,整个程式码就会变得非常简洁。
如果需要两层 for 循环才能生成的串列,同样也能使用串列生成式来产生。
此外,串列生成式也可以加入 Python 的内建函式,针对产生的项目做处理,下面的程式,只要透过一行串列产生式,就能取出二维阵列里的最小值。
串列生成式不仅能使用 for 循环快速产生串列,也可以搭配 if 判断式,快速筛选并产生对应的内容,下方的程式码,透过串列生成式,将 if 放在后方,就能直接产生一个偶数的串列。
字典生成式只要撰写一行程式码,就能快速产生一个字典,其语法为:
下方的例子,会建立一个项目数值平方的字典。
集合生成式只要撰写一行程式码,就能快速产生一个集合,其语法为:
下方的例子,会建立一个项目数值平方的集合。
元组没有生成式的语法,但是有类似的方式可以生成元组,其语法为:
