gpt4 book ai didi

python - 如何检查列表 1 中的所有元素是否在 *相同数量* 中并且以任何顺序排列在列表 2 中?

转载 作者:太空狗 更新时间:2023-10-29 17:42:08 25 4
gpt4 key购买 nike

一开始我知道这是一个非常常见的问题,但我还没有找到一个具体的问题。 (如果你这样做,请告诉我。)我发现的所有方法都不适合我。我需要检查列表 1 的所有元素是否以相同的数量出现在列表 2 中。

例如:

#If list1 = [2,2,2,6]    
# and list2 =[2,6,2,5,2,4]
#then all list1 are in list2.
#If list2 = [2,6] then all list1 are not in list2.

我正在尝试这种方式:

list1 = [6,2]

import itertools

for i in itertools.product((2,4,5,1), repeat=3) :
asd = i[0] + i[1]
asd2= i[1] + i[2]

list2 = [asd, asd2]
if all(elem in list2 for elem in list1):
print (i,list2)

当元素在 list1 中不重复时有效,如 [1,2]。但是当它们重复时,所有重复的元素都只被计算为 1 :[2,2,2] 它被理解为 [2]。或者我认为。

最佳答案

使用collections.Counter转换为 dict_items View Set of (value, count) pairs。然后就可以使用正常的集合操作了。

from collections import Counter

def a_all_in_b(a, b):
"""True only if all elements of `a` are in `b` in the *same quantity* (in any order)."""
return Counter(a).items() <= Counter(b).items()

请注意,Counter 仅适用于可散列元素,因为它是 dict 的子类。

关于python - 如何检查列表 1 中的所有元素是否在 *相同数量* 中并且以任何顺序排列在列表 2 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435166/

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