首页 > 代码库 > Python学习九:列表生成式
Python学习九:列表生成式
列表生成式,是Python内置的一种极其强大的生成list的表达式。
如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10):
[python] view plain copy
print?
- >>> range(1, 9)
- [1, 2, 3, 4, 5, 6, 7, 8]
可是,如果要生成[1*1 , 2*2 , 3*3 , ... , 10*10] 怎么做呢?可以使用循环:
[python] view plain copy
print?
- >>> L= []
- >>> for x in range(1 , 10):
- ... L.append(x*x)
- ...
- >>> L
- [1, 4, 9, 16, 25, 36, 49, 64, 81]
而列表生成式,可以用一句代替以上的繁琐循环来完成上面的操作:
[python] view plain copy
print?
- >>> print [x*x for x in range(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 plain copy
print?
- >>> [x*x for x in range(1 , 11) if x%2 == 0]
- [4, 16, 36, 64, 100]
- >>>
当然,可以使用两层循环,生成全排列:
[python] view plain copy
print?
- >>> print [m + n for m in ‘ABCD‘ for n in ‘XYZ‘]
- [‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘, ‘DX‘, ‘DY‘, ‘DZ‘]
- >>>
如何使用两个变量来生成list:
[python] view plain copy
print?
- d = {‘Java‘:"99" , ‘C‘:"99" , ‘C++‘:"99" }
- L = [k+‘=‘+v for k , v in d.iteritems()]
- print L
最后来做一个练习:
L = [‘Java‘ , ‘C‘ , ‘Swift‘ , ‘Python‘ , 123] , 现在有 list 中包含字符串,和整数,把list中得大写字符转为小写,推到出另外一个list":
1、使用内建的isinstance函数可以判断一个变量是不是字符串
2、s.lower() 可以将一个大写字母转为小写。
3、增加if语句保证列表生成式正确执行。
代码如下:
[python] view plain copy
print?
- L = [‘Java‘ , ‘C‘ , ‘Swift‘ , ‘Python‘ , 123]
- print [s.lower() if isinstance(s , str) else s for s in L ]
Python学习九:列表生成式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。