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]
假设无序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]