字符串列表/ Python

时间:2015-11-24 18:31:04

标签: python string list loops

我需要在嵌套列表中查找项目并将字符串与它进行比较,但它会一直忽略我的代码。

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]]

2 个答案:

答案 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])。祝你好运!