python 比较列表和 return 不匹配的值

python compare lists and return unmatched values

我想比较我列表的子列表和 return 不匹配的变量

输入是

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] 中找到 !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()

我因为将列表与字符串匹配而出错。有没有更好的方法来实现这个逻辑?

试试这个

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