【云计算】Python之列表生成式
小标 2019-01-23 来源 : 阅读 710 评论 0

摘要:本文主要向大家介绍了【云计算】Python之列表生成式,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】Python之列表生成式,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。


列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。


1、生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]



print(list(range(1,11)))


2、生成[1x1, 2x2, 3x3, ..., 10x10]


方法一:用循环



L = []
for x in range(1, 11):
    L.append(x * x)
print(L)


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


方法二:列表生成式则可以用一行语句代替循环生成上面的list



print([x * x for x in range(1, 11)])


[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来


3、


(1)for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方



print([x * x for x in range(1, 11) if x % 2 == 0])


[4, 16, 36, 64, 100]


(2)还可以使用两层循环,可以生成全排列



print([m + n for m in 'ABC' for n in 'XYZ'])


['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']


三层和三层以上的循环就很少用到了。


4、运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:



import os  # 导入os模块
print([d for d in os.listdir('.')])  # os.listdir可以列出文件和目录


['.idea', '111.py', 'abstest.py', 'test.py', '__pycache__']


5、for循环其实可以同时使用两个甚至多个变量,比如dict的items()可以同时迭代key和value:



d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k, v in d.items():
    print(k, '=', v)


y = B

x = A

z = C


因此,列表生成式也可以使用两个变量来生成list:



d = {'x': 'A', 'y': 'B', 'z': 'C' }
print([k + '=' + v for k, v in d.items()])


['x=A', 'z=C', 'y=B']


最后把一个list中所有的字符串变成小写:



L = ['Hello', 'World', 'IBM', 'Apple']
print([s.lower() for s in L])


['hello', 'world', 'ibm', 'apple']


练习


如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:



>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 1, in 
AttributeError: 'int' object has no attribute 'lower'


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



>>> x = 'abc'
>>> y = 123
>>> isinstance(x, str)
True
>>> isinstance(y, str)
False


请修改列表生成式,通过添加if语句保证列表生成式能正确地执行:



L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = [s1.lower() for s1 in L1 if isinstance(s1, str)]
print(L2)


['hello', 'world', 'apple']


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程