如果第二个列表中存在元素,请选择子列表



我有两个列表:

A = [['67', '75', 'X'], ['85','72', 'V'], ['1','2', 'Y'],  ['3','5', 'X', 'Y']]
B = ['X', 'Y']

我想创建第三个列表,C,它具有A的子列表,这些子列表具有在B(/or)上定义的元素。

C = [[67', '75', 'X'],['1','2', 'Y'],  ['3','5', 'X', 'Y']]

我试过:

C = [i for i in B if i in A]

但它没有用,我得到了一个空的 C 列表。请让我知道获得C的最佳方法是什么。

使用列表推导式来检查B中的任何元素是否在A

A = [['67', '75', 'X'], ['85','72', 'V'], ['1','2', 'Y'], ['3','5', 'X', 'Y']]
B = ['X', 'Y']
C = [x for x in A if any(y in x for y in B)]
# [['67', '75', 'X'], ['1', '2', 'Y'], ['3', '5', 'X', 'Y']]
C = [y for y in A for x in B if x in y]

这应该可以解决问题。

你也可以使用这个:

C = list()
for i in A:
if B[0] in i or B[1] in i:
C.append(i)

您还可以使用 set 交集来检查A的元素e(子列表)和定义为set(B)b元素(子列表)之间是否存在任何共同的元素。

所以

b = set(B)
C = [ e for e in A if b.intersection(set(e)) ]
#=> [['67', '75', 'X'], ['1', '2', 'Y'], ['3', '5', 'X', 'Y']]

相关内容

最新更新