1
paloalto OP set(list_1) ^ set((list_2)
发现这俩List合并了。。 因为不止是进行list比对,还要对list中的字符串做比对。单独list比对,肯定找不到,找不到的结果就是把它俩合并了。 |
2
winshuai 2012-12-05 04:21:52 +08:00 1
list_3 = [list_2_element for list_2_element in list_2 for list_1_element in list_1 if list_1_element in list_2_element]
|
3
Hualin 2012-12-05 04:23:16 +08:00
先把要互相查找的 list 类型数据 换成 set 类型数据
然后对 set1 中的元素进行迭代,来删除 set2 中的元素 然后再把 set2 还原 成 list 类型 |
4
Hualin 2012-12-05 04:27:01 +08:00
我只能说 python 不是很鼓励 one-liner,不好看 不好懂 也难改
|
6
winshuai 2012-12-05 04:44:39 +08:00 1
@Hualin 确实
result = [] for list_2_element in list_2: for list_1_element in list_1: if list_1_element in list_2_element: result.append(list_2_element) |
7
Reo 2015-02-04 09:08:05 +08:00
@paloalto :Hi paloalto, 我刚学Python, 现在也有一个跟你一样的问题想解决。能把你对于这个问题的代码share一下吗?非常感谢~
我写的代码还是有问题,list_2 中如果某行包含list_1中的某行,这样的就删不掉(我的是把包含的输出到一个文件中),只有当list_2和list_1两行完全一样才被删掉。我的代码如下: fileOne = open("a.txt", "r").readlines() fileTwo = open("b.txt", "r").readlines() outFile = open("c.txt", "w") for i in fileOne: for j in fileTwo: if j in i: outFile.write(i) |