如何通过使用for循环转换列表中的单个项目?我想让程序识别飞机不是小写和小写。
vehicles = ['car', 'bicycle', 'Plane',]
for vehicle in vehicles:
if vehicle == vehicle.lower():
print(f"{vehicle.title()} is in lowercase")
else:
print(f"Vehicle is not in lowercase: {vehicle}")
I tried with:
if vehicle in vehicles != vehicle.lower():
vehicle = vehicle.lower()
print(vehicles)
但是当我再次打印list时,它仍然显示第一个大写字母的平面。
编辑:很抱歉造成一些混淆,我添加了"print(f"{vehicle.title()}是小写")"只是为了美学。我想要的是让程序识别非小写字符串然后在列表中修改该字符串,然后当列表再次打印时,它会显示">
您的第一个代码位正确地检测字符串是否不是小写的,但是您打印非小写的版本(使用vehicle.title()
)。实际上,你不需要来检测它是否是小写的。把它们都小写就行了——这样很便宜。
vehicles = [vehicle.lower() for vehicle in vehicles]
听起来你只是想把所有东西都变成小写,在这种情况下你可以使用列表推导式:
vehicles_lower = [v.lower() for v in vehicles]
print(vehicles_lower)
你的问题是重复的修改列表中当前迭代元素的值
如果你想改变列表,你必须像这样改变for循环:
a_list = ["a", "b", "c"]
for i in range(len(a_list)):
a_list[i] = a_list[i] + a_list[i]
print(a_list)
在他的回答中,@erip提供了另一种语法,通过将结果赋值给列表来完成此操作。