Skip to main content
 首页 » 编程设计

python之在原始集中没有匹配项的列表列表

2025年05月04日9bluestorm

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

[(1, 2), (3, 4), (5, 6), (7, 8)] 

这样的顺序不是必须的,也可以:

[(1, 4), (2, 6), (3, 5), (7, 8)] 

这些列表有两个属性:

  • 如果排序和展平,它们变成从 1 到 n 的范围(如 [1, 2, 3,..n])
  • n 是偶数
  • n 大于 2

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

所以,假设我有:

a = [(1, 2), (3, 4), (5, 6), (7, 8)] 

从 a 中创建元组 b 列表的方法是什么,这样其中就没有原始元组了?

例如

b = [(1, 8), (3, 7), (2, 6), (4, 5)] 

没关系,但是

b = [(1, 2), (3, 7), (5, 6), (4, 8)] 

不行,因为它包含 (1, 2) 和 (5, 6) 出现在 a

PS:(标题乱七八糟,不知道怎么解释比较好(会很乐意编辑)。

请您参考如下方法:

基于我天真的方法评论:

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)] 

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