首页 >后端开发 >Python教程 >如何同时对一个列表进行排序并排列另一个列表以保持对应关系?

如何同时对一个列表进行排序并排列另一个列表以保持对应关系?

Linda Hamilton
Linda Hamilton原创
2024-12-05 20:51:12214浏览

How Can I Simultaneously Sort One List and Permute Another to Maintain Correspondence?

同时排序和排列并行列表

问题:

给定两个项目列表,称为 list1 和 list2,目标是对 list1 中的元素进行排序,同时重新排列 list2 中的元素匹配list1的排序顺序。换句话说,我们希望保持两个列表中元素之间的对应关系。

解决方案:

解决此问题广泛采用的技术是“装饰、排序” , undecorate”习语:

list1, list2 = zip(*sorted(zip(list1, list2)))

此代码演示了以下内容步骤:

  1. zip(list1, list2) 从两个列表创建成对的相应元素,有效地用另一个列表中的同伴“装饰”每个元素。
  2. sorted(zip( list1, list2)) 根据第一个元素(来自 list1)对对进行排序。
  3. zip(*...) “取消装饰”已排序的元素对,生成排序后的 list1 和匹配的排列后的 list2。

其他注意事项:

  • 提供的解决方案通过比较来解释 list1 中的相等元素它们在list2中对应的元素。如果这种比较是不可取的或计算成本高昂,请考虑使用替代键函数:
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
  • 处理空输入列表至关重要。如果您的输入列表可能为空,请确保您有适当的错误处理或特殊情况以防止错误。

以上是如何同时对一个列表进行排序并排列另一个列表以保持对应关系?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn