python开发入门——列表生成式
介绍
本文主要介绍Python中列表生成式的基本知识和使用
生成列表
要生成list[1,2,3,4,5,6,7,8,9,10],我们可以用range(1,11):
>>>range(1,11) [1,2,3,4,5,6,7,8,9,10]
但如果要生成[1x1,2x2,3x3,...,10x10]怎么做?方法一是循环:
>>>L=[] >>>forxinrange(1,11): ...L.append(x*x) ... >>>L [1,4,9,16,25,36,49,64,81,100]
但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:
>>>[x*xforxinrange(1,11)] [1,4,9,16,25,36,49,64,81,100]
这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成list。
写列表生成式时,把要生成的元素x*x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。
复杂表达式(TODO)
使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。
假设有如下的dict:
d={'Adam':95,'Lisa':85,'Bart':59}
完全可以通过一个复杂的列表生成式把它变成一个HTML表格:
tds=[''%(name,score)forname,scoreind.iteritems()] print' %s %s
Name | Score |
---|---|
注:字符串可以通过%进行格式化,用指定的参数替代%s。字符串的join()方法可以把一个list拼接成一个字符串。
把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:
Name Score Lisa 85 Adam 95 Bart 59
条件过滤
列表生成式的for循环后面还可以加上if判断。例如:
>>>[x*xforxinrange(1,11)] [1,4,9,16,25,36,49,64,81,100]
如果我们只想要偶数的平方,不改动range()的情况下,可以加上if来筛选:
>>>[x*xforxinrange(1,11)ifx%2==0] [4,16,36,64,100]
有了if条件,只有if判断为True的时候,才把循环的当前元素添加到列表中。
多层表达式
for循环可以嵌套,因此,在列表生成式中,也可以用多层for循环来生成列表。
对于字符串'ABC'和'123',可以使用两层循环,生成全排列:
>>>[m+nformin'ABC'fornin'123'] ['A1','A2','A3','B1','B2','B3','C1','C2','C3']
翻译成循环代码就像下面这样:
L=[] formin'ABC': fornin'123': L.append(m+n)
结语
以上就是python开发入门——列表生成式的详细内容,更多关于python列表生成式的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。