我有一个元组列表(又由列表组成),想检查元组中第一个列表的元素有多少在元组的第二个列表中。
names =[
([''],['aa']),
(['aa', 'bb'],['aa']),
(['cc'],['cc', 'dd', 'yy']),
(['xx', 'ss'],['xx', 'ss']),
]
所以对于上述内容我想要一份清单
[0, 1, 1, 2]
因为 '' 不在 ['aa'} 中,'aa' 在 ['aa'] 中,'cc' 在 ['cc', 'dd', 'yy'] 中以及 'xx' 和 'ss'位于 ['xx', 'ss'] 中。 有没有办法不用 for 循环来做到这一点?
可以统计两者交集处的元素:
[len(set(first) & set(second)) for (first, second) in names]
# [0, 1, 1, 2]
请注意,这仍然是一个 for 循环,只是写为列表理解。