下面给出了:'int'对象没有属性'lower'。你知道吗
我想将我从传入参数创建的列表中的每一项都转换为小写。你知道吗
我把元组转换成列表,因为我的理解是元组是不能改变的 当我尝试小写时,我得到了错误。你知道吗
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()不工作,我太笨了,看不出我做错了什么:(
您的问题源于这样一个事实:您给了
is_purple
一个int和string的列表。更准确地说,(int,int,string,string)。你知道吗在这里我们可以看到
1
是int
类型,"Purple"
是string类型,这对于Python来说不是问题,因为您可以在列表中混合和匹配类型。你知道吗要解决您的问题,您可以假设您的目的是使用所有字符串,如第二个示例所示:
呼叫
print(is_purple(str(1),str(2),"colors","Purple"))
或者直接将您的输入转换为
str
(注意str(i)
)或者,如果你想要一个更紧凑的版本
但是,如果您的
lfp
输入可能非常大,最好的解决方案是使用生成器,这是一种更轻、更高效的内存高级技术。你知道吗注意,对于生成器,我必须添加list(),但是在
lfp
可能很大并且一次处理一个条目的情况下,生成器是最佳选择。你知道吗您正在将多个值传递给
is_purple
两个int
类型和两个string
类型。lower()
是一个只能在字符串上调用的函数,因此当您试图在int
上调用它时,它将抛出一个错误在第二个示例中,您只对
.lower()
对象调用string
,因此它确实有效。你知道吗因为,列表中没有字符串。只有字符串具有
.lower()
函数。因此,在执行.lower()
之前,请检查它是否是字符串:isinstance(x, str)
检查x
是否为字符串。如果它返回一个True
,我们就执行.lower()
,否则就保留列表项的原样。你知道吗相关问题 更多 >
编程相关推荐