python匹配列表中的项目以创建新列表

时间:2013-03-12 20:35:17

标签: python list

我正在尝试编写一个程序,为一定数量的玩家创建一个循环赛锦标赛计划(每个玩家扮演其他所有玩家)。
我想知道是否有办法只使用列表来做到这一点。我试图不使用itertools.combinations()

如果我有一个允许您输入玩家数量并生成这些玩家列表的程序,有没有人能想到这样做的方法? 示例:4名玩家生成列表[1,2,3,4]

我需要打印程序:

第一轮:1比4比2比3

第2轮:1比3比4比2

第3轮:1比2比3比4

1 个答案:

答案 0 :(得分:2)

这是here所述的第一个算法的简单实现。

N = 6
a = range(N)
for i in xrange(N-1):
    print zip(a[:N/2], reversed(a[N/2:]))
    a = a[:1] + a[-1:] + a[1:-1]

编辑:实际上,正如所指出的,它甚至适用于奇数N

(ORIG:仅当N为偶数时才有效。该链接说明了如何将其扩展为支持奇N秒。)