【问题标题】:String lists / Python [closed]字符串列表/ Python [关闭]
【发布时间】:2015-11-24 18:31:03
【问题描述】:

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

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

【问题讨论】:

  • 好吧,如果car_list[i][0]==brand 真的是真的,那会奏效。没有看到car_listbrand,我们无能为力。
  • car_list=[['BMW',4,False,200],['Mercedes',3,False,250],['Renault',2,False,150],['Audi',3,False,180]] 是我的名单。当我尝试调用函数car_list("BMW",car_list)" it adds a new list to my original list but it should make it car_list=[['BMW',5,False,200],['Mercedes',3,False,250],['Renault',2,False,150],[ '奥迪',3,False,180]]`
  • 将其添加到您的主帖中。
  • car_list的功能是什么?
  • 它是 add_new_car。我已经更正了。

标签: python string list loops


【解决方案1】:

使用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

【讨论】:

  • car_list.append([brand, 1, False, horse_power]) 可能更清楚,但是YMMV
  • @AdamSmith 你是对的。我专注于for/break/else,我没有注意到这一点:)
  • 谢谢!我的代码现在可以正常工作了。我也会考虑亚当·斯密的建议。再一次非常感谢你。 :)
【解决方案2】:

你应该用这样的函数名来调用你的函数:add_new_car("BMW",horse_power,car_list) insert horse power there。 if 语句的 else 也是不正确的。因为如果它在第一个索引中找不到你的车,它总是会跳出循环。删除整个else 部分并在函数末尾的循环外添加car_list.append([brand,1,False,horse_power])。祝你好运!

【讨论】:

  • 我知道我只是想念在那里写,所以 add_new_car("BMW",200,car_list) 也不起作用。
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 2021-03-17
  • 1970-01-01
相关资源
最近更新 更多