我需要比较两个列表,以便创建一个在一个列表中找到而在另一个列表中没有的特定元素的新列表。例如:
main_list=[]
list_1=["a", "b", "c", "d", "e"]
list_2=["a", "f", "c", "m"]
我想循环遍历list_1,并将list_2中没有在list_1中找到的所有元素附加到main_list。
结果应该是:
main_list=["f", "m"]
我怎么用python来做呢?
我需要比较两个列表,以便创建一个在一个列表中找到而在另一个列表中没有的特定元素的新列表。例如:
main_list=[]
list_1=["a", "b", "c", "d", "e"]
list_2=["a", "f", "c", "m"]
我想循环遍历list_1,并将list_2中没有在list_1中找到的所有元素附加到main_list。
结果应该是:
main_list=["f", "m"]
我怎么用python来做呢?
当前回答
从ser1中删除ser2中的条目。
输入
1 = pd。系列([1、2、3、4、5]) ser2 = pd。系列([4、5、6、7、8])
解决方案
ser1[~ser1.isin(ser2)]
其他回答
你可以使用集合:
main_list = list(set(list_2) - set(list_1))
输出:
>>> list_1=["a", "b", "c", "d", "e"]
>>> list_2=["a", "f", "c", "m"]
>>> set(list_2) - set(list_1)
set(['m', 'f'])
>>> list(set(list_2) - set(list_1))
['m', 'f']
根据@JonClements的评论,这里是一个更整洁的版本:
>>> list_1=["a", "b", "c", "d", "e"]
>>> list_2=["a", "f", "c", "m"]
>>> list(set(list_2).difference(list_1))
['m', 'f']
当你有本地方法可用时,不确定为什么上面的解释如此复杂:
main_list = list(set(list_2)-set(list_1))
main_list=[]
list_1=["a", "b", "c", "d", "e"]
list_2=["a", "f", "c", "m"]
for i in list_2:
if i not in list_1:
main_list.append(i)
print(main_list)
输出:
['f', 'm']
我用了两种方法,我发现其中一种方法比另一种更有用。以下是我的回答:
我的输入数据:
crkmod_mpp = ['M13','M18','M19','M24']
testmod_mpp = ['M13','M14','M15','M16','M17','M18','M19','M20','M21','M22','M23','M24']
Method1: np。我喜欢这种方法,因为它保留了位置
test= list(np.setdiff1d(testmod_mpp,crkmod_mpp))
print(test)
['M15', 'M16', 'M22', 'M23', 'M20', 'M14', 'M17', 'M21']
Method2:虽然答案和Method1一样,但是打乱了顺序
test = list(set(testmod_mpp).difference(set(crkmod_mpp)))
print(test)
['POA23', 'POA15', 'POA17', 'POA16', 'POA22', 'POA18', 'POA24', 'POA21']
Method1 np。Setdiff1d完全符合我的要求。 这是信息的答案。
从ser1中删除ser2中的条目。
输入
1 = pd。系列([1、2、3、4、5]) ser2 = pd。系列([4、5、6、7、8])
解决方案
ser1[~ser1.isin(ser2)]