我想比较列表中的子列表并返回不匹配的变量
输入
lst = [['2','b'], ['!d','e'], ['s','f', 'd'], ['24','!b'], ['and','7']]
期望的输出
out_lst = [['2','b'],['!d','e'],['s','f','d'] ['24','!b'], ['and', '7']['e','s','f'] ['2','24']]
我正在比较我的子列表,如果我在一个子列表['s','f','d']和d中找到另一个子列表['!d','e'],我合并两者并仅添加不匹配的变量['e','s','f']作为列表末尾的另一个子列表。怎么能有效地完成?
import itertools
def reduction(self):
for i in range(0,len(self.lst)):
for j in range(0,len(self.lst[i])):
if not any(x in [i][j]== "!"+x in [i][j]):
self.new_lst.append()
else:
itertools.chain(x , ~x)
self.new_lst.pop()
print new_lst.reduction()
由于列表与字符串匹配,我收到错误。有没有更好的方法来实现这个逻辑?
答案 0 :(得分:1)
试试这个
def reduction(self):
res = self.lst[:]
for i in self.lst:
for j in i:
for k in self.lst:
if "!"+j in k:
temp = i[:]
temp.remove(j)
temp2 = k[:]
temp2.remove("!"+j)
res.append(temp2+temp)
self.lst = res[:]
return self.lst