首页 > 解决方案 > .lower() for x in list,不工作,但在另一种情况下工作

问题描述

下面给了我:'int'对象没有属性'lower'。

我想将我从传入的参数创建的列表中的每个项目转换为小写。

我将 tuple 转换为 list ,据我所知,元组无法更改,然后当我尝试小写时出现错误。

def is_purple(*lfp):
    lower1 = [i for i in lfp]
    empty_string = [x.lower() for x in lower1]
    return empty_string


print(is_purple(1,2,"colors","Purple"))  

但是,如果我这样做:

print([x.lower() for x in ["A","B","C"]])

有用。我点击搜索并输入

.lower() 不起作用,我太愚蠢了,看不出我做错了什么:(

标签: pythonstringpython-3.x

解决方案


因为,您的列表中有非字符串。只有字符串才有.lower()功能。所以在你做之前.lower(),检查它是否是一个字符串:

def is_purple(*lfp):
    empty_string = [x.lower() if isinstance(x, str) else x for x in lfp]
    return empty_string

print(is_purple(1,2,"colors","Purple"))
# [1, 2, 'colors', 'purple']

isinstance(x, str)检查是否x为字符串。.lower()如果这返回一个else ,我们会这样做,True保留列表项原样。


推荐阅读