如何从Python列表中移除常见词?代码问题求助
修复移除列表中常见词的Python代码
原代码的问题
- 遍历
Alist时,x是列表里的具体元素(比如"the"),不是整数索引,用Alist[x]会直接报错,因为列表只能用整数定位元素。 - 遍历
common时,i是列表里的元素,common[i]同样是用元素当索引,逻辑完全错误。 - 边遍历列表边用
remove()修改原列表,会导致遍历跳过元素:比如删除某个元素后,后面的元素会往前挪一位,循环的下一次迭代会跳过原本的下一个元素。
基础修复方案(推荐)
最安全易懂的方式是创建新列表,只保留不在常见词里的元素:
Alist = ["the", "baby", "is", "so", "happy"] common = ["the", "so"] new_list = [] # 遍历原列表的每个单词 for word in Alist: # 如果单词不在常见词列表里,就加入新列表 if word not in common: new_list.append(word) # 把新列表赋值给Alist,完成替换 Alist = new_list print(Alist) # 输出: ["baby", "is", "happy"]
原地修改列表的方案
如果一定要直接修改原列表(不创建新列表),可以反向遍历索引(从后往前删),避免遍历混乱:
Alist = ["the", "baby", "is", "so", "happy"] common = ["the", "so"] # 从最后一个元素的索引开始,倒着遍历到第一个元素(索引0) for index in range(len(Alist)-1, -1, -1): # 检查当前索引对应的单词是否在常见词里 if Alist[index] in common: # 根据索引删除元素 Alist.pop(index) print(Alist) # 输出: ["baby", "is", "happy"]
内容的提问来源于stack exchange,提问作者Petite Foufoune
相关产品推荐
相关产品推荐

