gpt4 book ai didi

python - 列表中对元素的计数

转载 作者:太空狗 更新时间:2023-10-30 02:29:08 24 4
gpt4 key购买 nike

a = [2,7,9]
b = [[7,9],[1,2],[2,9]]

列表[a]中有多少对匹配对元组[b]请注意列表 [a] 中的 [7,9][2,9] 对。即使 [1,2] 对包含一个数字 2,它也不会被计算在内,因为这两个数字都不在 [a] 列表中>。返回值应为 2,即匹配对的长度。

len(filter(lambda l:if_in(b,l),a))

需要帮助创建一个 if_in 函数或一个更简单的方法来编写这个函数。无论 ab 的大小如何,我怎样才能使这个函数工作。

最佳答案

a 设为集合并使用set.issuperset ,检查 a 是否是每个子列表的 superset:

a = [2,7,9]
b = [[7,9],[1,2],[2,9]]


st = set(a)

print(sum(st.issuperset(sub) for sub in b))
2

你可以采用两种方式,要么制作所有子列表集合,要么像上面那样只制作一个集合,当 a 是子列表的超集时,子列表是 a 的子集:

In [6]: a = [2,7,9]

In [7]: b = [[7,9],[1,2],[2,9]]

In [8]: st = set(b[0])

In [9]: st.issubset(a)
Out[9]: True
In [10]: st = set(b[1])

In [11]: st.issubset(a)
Out[11]: False

In [13]: st = set(a)

In [13]: st.issuperset(b[0])
Out[13]: True

In [14]: st.issuperset(b[1])
Out[14]: False

显然,由于您的 a 列表中只有几个数字,因此从 a 中创建一个集合并使用超集更有意义。

关于python - 列表中对元素的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com