【廖雪峰Python习题集】列表生成式

来源:互联网 发布:淘宝基础版和智能板 编辑:程序博客网 时间:2024/05/22 08:14

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

>>> [s.lower() for s in L]Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "<stdin>", line 1, in <listcomp>AttributeError: 'int' object has no attribute 'lower'

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


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

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

>>> L = ['Hello', 'World', 18, 'Apple', None]>>>[s.lower() for s in L if isinstance(s,str)]


运行结果如下图所示:


原创粉丝点击