输入:
list1 = ['name', 'age', 'gender', 'location']
list2 = ['name', 'age']
list3
输出:
list3 = ['gender', 'location']
如何从列表中减去常用元素?
答案 0 :(得分:3)
使用list comprehension
,
In [4]: list3 = [i for i in list1+list2 if i not in list2]
In [5]: list3
Out[5]: ['gender', 'location']
OR
In [23]: [i for i in list1+list2 if (list1+list2).count(i) == 1]
Out[23]: ['gender', 'location']
答案 1 :(得分:1)
使用套装,
list3 = list(set(list1)^set(list2))
答案 2 :(得分:0)
一种简单的方法可能是迭代2个列表中较大的一个,如果在另一个列表中找不到当前元素,则追加到最终结果。
示例强>
list1 = ['name', 'age', 'gender', 'location']
list2 = ['name', 'age']
res = []
for l in list1:
if l not in list2:
res.append(l)
print res
输出 [“性别”,“位置”]
希望这有帮助!
答案 3 :(得分:0)
一个简单的开头方法:
list1 = some_list
list2 = some_other_list
list3 = []
if len(list1) >= len(list2):
longer_list = list1
shorter_list = list2
else:
longer_list = list2
shorterlist = list1
for element in longer_list:
if element not in shorter_list:
list3.append(element)
这样,您可以捕获全部差异。如果外部循环中的列表比内部循环中的列表短,则会遗漏一些元素。
随着您的进步,您将选择其他方法,例如设置差异:list(set(list1) - set(list2))
,列表推导:[i for i in list1 if i not in list2]
,使用lambdas进行过滤等。
从基础开始,了解正在发生的事情,学习花哨的方法
答案 4 :(得分:0)
尝试以下代码。
In [1]: list1 = ['name', 'age', 'gender', 'location']
In [2]: list2 = ['name', 'age']
In [3]: list3 = list(set(list1) - set(list2))
In [4]: list3
Out[4]: ['gender', 'location']
此方法类似于使用sets的@Aidan Dowling答案。我认为这比使用for循环更好。