在一个列表生成式中,for前面的if ... else是表达式,而for后面的if是过滤条件,不能带else。
L1 = ['Hello', 'World', 18, 'Apple', None] L2 = [x.lower() for x in L1 if(isinstance(x,str)==True) ] # 测试: #print(L2) if L2 == ['hello', 'world', 'apple']: print('测试通过!') else: print('测试失败!')
L3 = [x.lower() if(isinstance(x,str)==True) else x for x in L1] #['hello', 'world',18, 'apple',none]
#使用内建的isinstance
函数可以判断一个变量是不是字符串
>>>a = 2
>>> isinstance (a,int)
True