这是两个列表,它们都具有相同数量的元素:
list1 = [['23', '30', 'pm'], ['01', '00', 'am'], ['1', '00', 'am'], ['1', '00', 'pm'], ['1', '', 'pm'], ['5', '', 'pm']]
list2 = [['23', '30', 'pm'], ['01', '00', 'am'], ['01', '00', 'am'], ['01', '00', 'pm'], ['01', '00', 'pm'], ['05', '00', 'pm']]
我试试这个:
list1 = list(list1 - list2)
list2 = list(list2 - list1)
print(repr(list1))
print(repr(list2))
但是我在尝试减去两个列表中相同的元素时得到了这个错误
TypeError: unsupported operand type(s) for -: 'list' and 'list'
我需要这样的列表,也就是说,在每个列表中只有那些不同的元素:
list1 = [['1', '00', 'am'], ['1', '00', 'pm'], ['1', '', 'pm'], ['5', '', 'pm']]
list2 = [['01', '00', 'am'], ['01', '00', 'pm'], ['01', '00', 'pm'], ['05', '00', 'pm']]
我怎样才能做到这一点? (如果可能而不使用额外的库,尽管如果没有其他方法我使用它们也没有问题)
最佳答案
您应该使用 zip
并行迭代列表,并使用另一个 zip
将输出分隔回两个列表:
l1,l2 = map(list, zip(*((a,b) for a,b in zip(list1, list2) if a!=b)))
输出:
# l1
[['1', '00', 'am'], ['1', '00', 'pm'], ['1', '', 'pm'], ['5', '', 'pm']]
# l2
[['01', '00', 'am'], ['01', '00', 'pm'], ['01', '00', 'pm'], ['05', '00', 'pm']]
关于python - 如何从这两个列表列表中删除出现在两个列表列表中的可能列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73439708/