gpt4 book ai didi

python - 如何从这两个列表列表中删除出现在两个列表列表中的可能列表?

转载 作者:行者123 更新时间:2023-12-05 02:26:58 26 4
gpt4 key购买 nike

这是两个列表,它们都具有相同数量的元素:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com