我正在尝试制作一个从列表中减去列表的代码
例如:
list1 = ['hi', 'hi', 'once', 'twice']
list2 = ['hi', 'once', 'twice']
减去我想要的列表的结果是:
differenceoflists = ['hi']
目前,我正在使用代码
list1 = ['hi', 'hi', 'once', 'twice']
list2 = ['hi', 'once', 'twice']
differenceoflists = []
for i in list1:
if i not in list2:
differenceoflists.append(i)
print(differenceoflists)
然而,这段代码并没有按我所希望的方式运行。当我希望它返回['hi']
时,它返回一个空列表。如何才能正确地执行此操作
您的代码无法正常工作,因为它无法跟踪
list2
中的项被用来丢弃list1
中相应项的频率您可以从
list1
的副本开始创建differenceoflists
,然后从list2
中删除所有项目,而不是通过添加项来构建differenceoflists
。这样,对应的项对只匹配一次,如果一个项在list1
中比在list2
中更频繁地被包含,则额外项将保留要从列表中删除项目,可以使用
remove
方法。当您试图删除的项目不在列表中时,您需要处理这种情况(只需忽略它)当将此代码与Jab's answer中显示的代码进行比较时,结果中包含项的顺序存在一些细微的差异。根据您的具体需要,您需要选择其中之一
differenceoflists
从左侧删除项目,而differenceoflists_jab
从右侧删除项目:differenceoflists_jab
不保留list1
中项目的顺序:这也可以通过使用
collections.Counter
来完成。您可以将计数器相互减去,然后将结果变成一个列表:相关问题 更多 >
编程相关推荐