python比较列表并返回不匹配的值

时间:2015-10-31 05:07:34

标签: python comparison

我想比较列表中的子列表并返回不匹配的变量

输入

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()

由于列表与字符串匹配,我收到错误。有没有更好的方法来实现这个逻辑?

1 个答案:

答案 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