具有在原始集中没有匹配的对的列表列表

Dav*_*ker 1 python combinations list-comprehension

我有一组列表形式的元组:

[(1, 2), (3, 4), (5, 6), (7, 8)]
Run Code Online (Sandbox Code Playgroud)

在这样的顺序中没有必要,它也可以:

[(1, 4), (2, 6), (3, 5), (7, 8)]
Run Code Online (Sandbox Code Playgroud)

这些列表有两个属性:

  • 如果排序和展平,他们将成为从1到n(像[1, 2, 3,..n])的范围
  • n 甚至
  • n 大于2

  • 所有值都是唯一的(没有值重复).

所以,让我说我有:

a = [(1, 2), (3, 4), (5, 6), (7, 8)]
Run Code Online (Sandbox Code Playgroud)

创建元组列表的方法是什么b,a这样就不会有原始元组?

所以例如

b = [(1, 8), (3, 7), (2, 6), (4, 5)]
Run Code Online (Sandbox Code Playgroud)

没事,但是

b = [(1, 2), (3, 7), (5, 6), (4, 8)]
Run Code Online (Sandbox Code Playgroud)

不好,因为它包含(1, 2)(5, 6)呈现在a

PS :( 标题很乱,但我不知道怎么解释得更好(很乐意编辑).

sch*_*ggl 7

建立在我天真的方法评论:

a = [(1, 2), (3, 4), (5, 6), (7, 8)]
b = [(x[1], y[0]) for x, y in zip(a, a[1:]+a[:1])]
# [(2, 3), (4, 5), (6, 7), (8, 1)]
Run Code Online (Sandbox Code Playgroud)

这将来自相邻对的元素配对,从而保证原始列表中没有对