python - (Python)是否有更简单的方法将列表中的元素分配给另一个列表中的元素?
问题描述
假设我在一个列表中有 n 个工人,每个工人都有不同的任意技能水平,例如:
workers = [10, 50, 20, 30, 100, 150]
我需要将这些工人分配给两种不同类型的工作之一。一种类型的工作要求工人低于或等于某个技能水平(技能水平作为该列表的一个元素给出),例如:
job_one = [20, 5, 100, 25]
而另一份工作要求工人高于或等于一定的技能水平:例如:
job_two = [30, 20, 25, 60]
我需要编写一个程序来最大化分配给工作的工人数量,并找到该值。我尝试通过对所有列表进行排序(.sort())然后对每个列表使用 for 循环来将每个作业分配给工作人员来编写此代码。然后,作业被删除 (.remove())。
但是,这种方法在处理较大的集合时变得非常低效,而且由于我只需要占用最大数量的工作,我相信可能有一种更简单的方法。是这样吗?非常感谢您的帮助。
预期输出:
jobs_assigned = 6
解决方案
请尝试以下代码
jobs_assigned=len(job_one)+len(job_two)-len([i for i in job_one if i<min(workers)])+len([i for i in job_two if i>max(workers)])
这假设可以根据所提供的预期输出推断一个工人可以分配多个工作。
推荐阅读
- haskell - 从外部包中使用haskell类«默认»:示例请求
- php - 使用 Laravel 5.6 运行 cronjob(使用调度程序)
- powershell - 等效于 CURL 命令的 Powershell
- android - 编译android源代码android-6.0.1_r7时出错
- python - 对齐的 LaTeX 方程 SymPy
- java - 我在终端(mac)中的 java jdbc mysql 中出现错误,那么如何解决这个错误?
- amazon-ec2 - rgdal 不会安装在 AWS RStudio AMI 上
- c++ - FreeRTOS 仅在 Release 中崩溃
- javascript - ReactJS 上的预检响应无效(重定向)
- mysql - Mysql,行到列的动态查询