【发布时间】:2015-01-21 22:14:25
【问题描述】:
我查看了其他几个关于排列的问题,但似乎没有出现这种变体。我正在寻找一种生成有偏排列的简单方法。这就是我的意思。
假设我有两个列表(尽管我需要解决 N 个列表):
l1 = [a, b, c]
l2 = [d, e, f]
这些列表的排列看起来像 [(a,d), (a,e), (a,f), (b,d), (b,e), (b,f) ...] .然而,在我的世界里,排列的元素被评分和相加以评估排列。假设 a、d 和 e 值 2 分,而 b、c 和f 为 1 分。那么一些样本排列的值是:
(a,d) = 4
(a,e) = 4
(a,f) = 3
(c,f) = 2
我需要生成所有排列,但我想在较低值排列之前生成高值排列。
假设每个列表的元素按值降序排序,有没有一种好的方法可以按值顺序生成排列?
(显然我可以生成所有排列并对它们进行排序,但我更喜欢编写一个生成器,因为排列的数量可能很大。)
【问题讨论】:
-
为什么 b 在 d 之前?您还想要产品或排列吗?
-
(b, c) 真的应该在列表中吗?我的理解是你把两者混在一起了。
-
投票结束,因为您对输出的期望不是很清楚
-
@PadraicCunningham 我正在寻找排列。我修复了这个例子,现在看起来很清楚了。
-
@SlaterTyranus 这是一个错字,应该是 c,f。这些列表是独立的,不应混用。