从列表中选择B k在python中不在列表A中的不同元素?

时间:2015-11-13 13:50:25

标签: python list selection disjoint-sets

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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]

答案 1 :(得分:1)

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

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