select 来自列表 B k 个不在列表 A 中的不同元素 python?

select from list B k distinct elements that are not in list A in python?

假设无序listA = [1 2 3]s.t所有元素不同
并且无序 listB = [1 2 3 4 5] s.t 所有元素都不同

原问题是:
我如何选择 len(listA) 次,listB 的元素,
不在列表 A
中 并且彼此不同。

更新为:
我如何选择 len(listB)-len(listA) 次,listB 的元素,
不在列表 A
中 并且彼此不同。

对于更新后的案例,Pynchia给出的答案变为:
newList = list(set(bRightbLeft) - set(aLeft))[:len(bRightbLeft)-len(aLeft))]

如果你不关心你可以做哪些元素

newList = [ b for b in bList if set(b) not in aList][0:k]

如果我理解正确的话,这应该可以解决问题

listA = [1,2,3]
listB = [1,2,3,4,5]

newlist = list(set(listB) - set(listA))[:len(listA)]
print(newlist)

它产生

[4, 5]

如您所见,无法保证列表具有足够数量的元素(即 listA 的大小)

注意:最初(甚至现在部分)描述说输入列表中的元素可以重复。

在那种情况下,使用

listA = [1,2,3,2,1]
listB = [1,2,3,4,5,4,3,2,1]

set_A = set(listA)
newlist = list(set(listB) - set_A)[:len(set_A)]

产生

[4, 5]