如何计算人员列表与座位列表的唯一就座排列方式?
生成人员与座位的所有唯一就座组合
给定人员列表和座位列表,要找出所有人员对应唯一座位的就座方式,本质是求两个列表的全排列匹配(每个人员对应唯一座位,无重复占用)。
示例输入
people = ["P1", "P2", "P3"] seats = ["S1", "S2", "S3"]
解决方法(Python实现)
利用itertools.permutations生成座位的所有排列,再将每个排列与人员一一配对,即可得到所有唯一组合:
import itertools people = ["P1", "P2", "P3"] seats = ["S1", "S2", "S3"] # 生成所有座位排列,与人员逐一配对 all_seatings = tuple( tuple(zip(people, seat_permutation)) for seat_permutation in itertools.permutations(seats) ) print(all_seatings)
代码说明
itertools.permutations(seats):生成座位列表的所有可能排列,共n!种(n为座位数量)zip(people, seat_permutation):将每个人员与排列后的座位一一绑定,形成人员-座位配对元组- 外层
tuple嵌套:将所有组合整理成你需要的嵌套元组格式,运行结果与示例完全一致
内容的提问来源于stack exchange,提问作者Mgorji
相关产品推荐
相关产品推荐

