对列表pop返回的元素执行insert操作出现AttributeError,该如何解决?
报错原因
列表pop()方法的返回值为被移除的元素本身,而非移除元素后的剩余列表,你的代码执行逻辑如下:
- 初始
shopping_list = ['food','drinks'],第一次执行shopping_list.pop(0)后,列表移除了下标0的元素'food',剩余值为['drinks'] - 第二次执行
new_shopping_list = shopping_list.pop(0)时,pop(0)返回的是被移除的字符串类型元素'drinks',你将该字符串赋值给了new_shopping_list,而insert是列表专属方法,字符串没有该属性,因此触发AttributeError报错。
代码修改方案
根据常见的两类需求,对应修改方案如下:
方案1:将移除元素后的剩余列表赋值给新变量,再插入新元素
该方案运行后第一次打印结果为['drinks'],第二次打印结果为['fruits', 'drinks']
shopping_list = ['food','drinks'] shopping_list.pop(0) print(shopping_list) # 用copy方法生成独立的新列表,避免修改新列表时影响原列表 new_shopping_list = shopping_list.copy() new_shopping_list.insert(0,'fruits') print(new_shopping_list)
方案2:将弹出的元素存入新列表后再插入新元素
该方案运行后第一次打印结果为['drinks'],第二次打印结果为['fruits', 'food']
shopping_list = ['food','drinks'] poped_item = shopping_list.pop(0) print(shopping_list) # 把弹出的元素放入空列表,再执行插入操作 new_shopping_list = [poped_item] new_shopping_list.insert(0,'fruits') print(new_shopping_list)
内容的提问来源于stack exchange,提问作者user17415509
相关产品推荐
相关产品推荐

