Python学习九:列表生成式,,2015年02月12


2015年02月12日 15:38:52阅读数:32624

列表生成式,是Python内置的一种极其强大的生成list的表达式。

如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10):

[python]view plaincopy>>>range(1,9)[1,2,3,4,5,6,7,8]
可是,如果要生成[1*1 , 2*2 , 3*3 , ... , 10*10] 怎么做呢?可以使用循环:

[python]view plaincopy>>>L=[]>>>forxinrange(1,10):...L.append(x*x)...>>>L[1,4,9,16,25,36,49,64,81]
而列表生成式,可以用一句代替以上的繁琐循环来完成上面的操作:

[python]view plaincopy>>>print[x*xforxinrange(1,11)][1,4,9,16,25,36,49,64,81,100]>>>
列表生成式的书写格式:[x*x for x in range(1 , 11)]

第一:把要生成的元素 x*x 放到前面

第二:后面跟上for循环

这样就可以把list创建出来。

for循环后面还可以加上if判断,这样可以筛选出偶数的平方:

[python]view plaincopy>>>[x*xforxinrange(1,11)ifx%2==0][4,16,36,64,100]>>>
当然,可以使用两层循环,生成全排列:

[python]view plaincopy>>>print[m+nformin‘ABCD‘fornin‘XYZ‘][‘AX‘,‘AY‘,‘AZ‘,‘BX‘,‘BY‘,‘BZ‘,‘CX‘,‘CY‘,‘CZ‘,‘DX‘,‘DY‘,‘DZ‘]>>>如何使用两个变量来生成list:

[python]view plaincopyd={‘Java‘:"99",‘C‘:"99",‘C++‘:"99"}L=[k+‘=‘+vfork,vind.iteritems()]printL
最后来做一个练习:

L = [‘Java‘ , ‘C‘ , ‘Swift‘ , ‘Python‘ , 123] , 现在有 list 中包含字符串,和整数,把list中得大写字符转为小写,推到出另外一个list":

1、使用内建的isinstance函数可以判断一个变量是不是字符串

2、s.lower() 可以将一个大写字母转为小写。

3、增加if语句保证列表生成式正确执行。

代码如下:

[python]view plaincopyL=[‘Java‘,‘C‘,‘Swift‘,‘Python‘,123]print[s.lower()ifisinstance(s,str)elsesforsinL]

Python学习九:列表生成式

评论关闭