字符串列表/ Python

Alp*_*ail 0 python string loops list

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

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
Run Code Online (Sandbox Code Playgroud)

我的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]]
Run Code Online (Sandbox Code Playgroud)

当我尝试调用该函数时,add_new_car("BMW",car_list)它会在我的原始列表中添加一个新列表,但它应该成功car_list=[['BMW',5,False,200],['Mercedes',3,False,250],['Renault',2,False,150],??['Audi',3,False,180]]

fur*_*ras 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
Run Code Online (Sandbox Code Playgroud)

  • `car_list.append([brand,1,False,horse_power])`可能更清楚,但是YMMV (2认同)