问题描述:假设我有这样两个List,
一个是List1,List1 = [1,2,3,4,5]
一个是List2,List2 = [1,5]
我们如何得到一个新的List,List3,
List3中包括所有不在List2中出现的List1中的元素。
即:List3 = List1 C List2
解决方案:我们可以用set(集合) *** 作
List3 = List(set(List1) C set(List2))
set *** 作会将一个List转换成一个集合。
假设:List_t = [1,1]
那么:List(set(List_t)) = [1,3]
是的,重复的项会被删除。
其他方案:List3 = [i for i in List1 if i not in List2] #可用于List分片
这样写也很直观。
但是在List很大的时候,没有set方法快。
额外知识:a = [[i,j] for i in range(2) for j in range(3)]
这个和“其他方案”非常相似,
都是在[]里面进行判断和计算。
感觉很方便,至少比下面这样要方便、要快:
a = []
for i in range(2):
for j in range(3):
a.append([i,j])
某些问题:如果List_tmp = [[1,2],[2,3]]
即List里面不是单独的元素组成,而是List,
那么set(List_tmp)会出问题。
还要研究:hash函数
总结以上是内存溢出为你收集整理的Python中实现对list做减法 *** 作介绍全部内容,希望文章能够帮你解决Python中实现对list做减法 *** 作介绍所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)