求两个list的差集

时间:2025-04-02 20:00:06
  • # -*- coding: utf-8 -*-
  • import random
  • # 求两个list的差集,这两个list中都没有重复元素
  • # 在range(100)中随机选择20个放入list作为测试集, 剩下的80作为训练集
  • # 不要用关键词做变量名,比如list,set
  • list_all = range(100)
  • test_list = (list_all, 20) # 随机选取不重复的20个
  • # 方法一
  • train_list = []
  • for item in list_all:
  • if item not in test_list:
  • train_list.append(item)
  • print train_list
  • # 方法二:列表推导式(这种应该掌握)
  • train_list2 = [item for item in list_all if item not in test_list] # 将not去掉可以求交集
  • print train_list2
  • # 方法三:先转成set(两个list都没有重复元素,如果list_all有重复元素且不希望去掉重复元素,就不能用这种)
  • train_list3 = list(set(list_all) ^ set(test_list))
  • print train_list3
  • # 集合的交集,差集
  • # 注意转成set会把重复元素去掉,有时并不想去掉重复元素,就要用上面的方法一或者方法二
  • a = [1, 1, 2, 2, 3, 3, 4, 4]
  • b = [1, 2]
  • print list(set(a).intersection(set(b)))
  • print list(set(a).union(set(b)))
  • print list(set(b) ^ set(a)) # 差集,这个不区分顺序,谁写在前面都是大的减小的
  • print list(set(a).difference(set(b))) # 差集,,注意是前面减去后面,不能弄错顺序