我需要在嵌套列表中查找项目并将字符串与它进行比较,但它会一直忽略我的代码。
def add_new_car(brand,horse_power,car_list):
for i in range(len(car_list)):
if(car_list[i][0]==brand):
car_list[i][1]=car_list[i][1]+1
else:
car_list=car_list+[[brand,1,False,horse_power]]
break
我的if条件不起作用。 else条件正常工作。我的意思是,即使car_list[i][0]==brand
,它也会进入其他条件。
car_list=[['BMW',4,False,200],
['Mercedes',3,False,250],
['Renault',2,False,150],
['Audi',3,False,180]]
当我尝试调用函数add_new_car("BMW",car_list)
时,它会在我的原始列表中添加一个新列表,但它应该使其成为car_list=[['BMW',5,False,200],['Mercedes',3,False,250],['Renault',2,False,150],['Audi',3,False,180]]
答案 0 :(得分:5)
使用for/break/else
构建
def add_new_car(brand, horse_power, car_list):
for x in car_list:
if x[0] == brand:
x[1] += 1
break
else:
# run if not break
#car_list += [[brand, 1, False, horse_power]]
car_list.append([brand, 1, False, horse_power]) # Adam Smith suggestion
car_list = [
['BMW',4,False,200],
['Mercedes',3,False,250],
['Renault',2,False,150],
['Audi',3,False,180]
]
print car_list
add_new_car('Mercedes', 123, car_list)
print car_list
答案 1 :(得分:2)
您应该使用如下函数名称调用函数:add_new_car("BMW",horse_power,car_list)
在那里插入马力。 else
语句的if
也不正确。因为如果它没有在第一个索引中找到你的汽车,它总是突破循环。删除整个else
部分,并在函数末尾的循环外添加car_list.append([brand,1,False,horse_power])
。祝你好运!