列表生成listgeneration是python内置的一个非常强大的生成器,可以用来生成列表。在学习生成器之前,我们先来了解一下列表生成,这对我们对生成器的理解会有帮助。列表推导式语法格式如下[expforiter_variniterableif_exp]列表推导式实际执行过程如下:迭代iterable中的每个元素,判断if_exp表达式结果为真对于每次迭代,如果为真,则进行下一步,如果为假,则进行下一次迭代;将迭代结果赋值给iter_var,然后通过exp得到一个新的计算值;最后以新列表的形式返回所有通过exp得到的计算值。如果迭代的元素不需要过滤,if_exp可以省略。如果我们想生成一个从1到100的整数列表,我们可以使用list(range(1,101)),如果我们想对1到100的整数进行平方,我们可以使用循环来实现list=[]forxinrange(1,101):list.append(x*x)print(list)除了使用选择,我们还可以使用列表生成来实现list=[x*xforxinrange(1,101)]print(list)现在我们需要1到100内所有偶数的平方,我们也可以用list生成来实现list=[x*xforxinrange(1,101)ifx%2==0]print(list)通过使用列表生成我们可以编写简洁的代码来快速初始化列表。生成器从名字上看,生成器可以理解为生成数据的工具。生成器按照特定的规则不断生成数据,直到结束。生成器的语法规则如下:(expforiter_variniterableif_exp)从形式上看,生成器与列表生成非常相似,生成器只是将列表生成的方括号换成了圆括号。但是在实际使用中却有很大的区别。如果列表生成器一次生成一个列表,如果列表中的元素过多,会占用大量的内存空间,而生成器一次只生成一个元素,节省了内存空间,可以获得一个完整列表。列出内容。#!/usr/bin/envpython3#-*-coding:utf-8-*-list1=[x*xforxinrange(1,20)ifx%2==0]list2=(x*xforxinrange(1,20)ifx%2==0)print(type(list1))print(type(list2))print(list1)print(list2)forninlist2:print(n)forninlist2:print(n)上面代码的执行结果如下:
