我试图判断一个小列表是否包含另一个大列表中存在的所有数字

  • 这应该返回True,因为列表1中的所有元素都已在列表2中

case 2:[9797196]

  • 这应该返回False,因为list1有两个97,而list2只包含一个97
list1 = [97,97,196]
list2 = [97,97,99,101,103,196]


def isConsist(list1,list2):
    check = False

    # Iterate in the 1st list
    for m in list1:

        # Iterate in the 2nd list
        for n in list2:

            # if there is a match
            if m == n:
                check = True
                list2.remove(n) // remove the found element 
            else:
                check = False
                return False
    return check

check = isConsist(list1,list2)
print(check)


这是我的代码,但工作不正常

我的代码得到了false,因为当它判断第一个列表中的196时,它会将其与第二个列表中的99进行比较,然后返回false

推荐答案

将列表转换为集合并不能解决问题.最好的方法是使用collections.Counter.这是我的代码:

from collections import Counter

list1 = [97, 97, 196]
list2 = [97, 97, 99, 101, 103, 196]


def consist(a, b):
    a_count = Counter(a)
    b_count = Counter(b)
    for key in a_count:
        if key not in b_count:
            return False
        if b_count[key] > a_count[key]:
            return False
    return True


print(consist(list1, list2))

这里,在前if个条件中,我们判断list1中的元素是否存在于list2中.在第二个if条件中,我们正在判断list1中元素的计数是否与list2中元素的计数相同.

这是我得到的最好的答案.希望有帮助……)

Python相关问答推荐

如何修复fpdf中的线路出血

Python在通过Inbox调用时给出不同的响应

FastAPI:使用APIRouter路由子模块功能

Python中的锁定类和线程以实现dict移动

在Python中使用一行try

阅读Polars Python中管道的函数定义

Python多处理:当我在一个巨大的pandas数据框架上启动许多进程时,程序就会陷入困境

根据条件将新值添加到下面的行或下面新创建的行中

Polars LazyFrame在收集后未返回指定的模式顺序

滚动和,句号来自Pandas列

如何删除索引过go 的lexsort深度可能会影响性能?' &>

Python中的嵌套Ruby哈希

不理解Value错误:在Python中使用迭代对象设置时必须具有相等的len键和值

优化pytorch函数以消除for循环

将tdqm与cx.Oracle查询集成

部分视图的DataFrame

导入...从...混乱

使用BeautifulSoup抓取所有链接

在输入行运行时停止代码

从列表中获取n个元素,其中list [i][0]== value''