【问题标题】:how to create x,y pair from a list [duplicate]如何从列表中创建 x,y 对 [重复]
【发布时间】:2026-01-01 14:25:01
【问题描述】:

我有一个包含k 元素的列表。
我想用x,y 对形成另一个列表,其中y 值是x 值右侧索引中的元素。

例如:

我有一个包含 4 个元素的列表:4, 8, 7, 1
我需要用这样的对创建一个对列表:
(4, 8), (4, 7), (4, 1), (8, 7), (8, 1) (7, 1)

我正在使用 python 这是我的代码:

list1 = list(map(int,input().strip().split()))[:k]
list2 = [(val,val1) for val in person1 for val1 in person2[1:]]

【问题讨论】:

  • 您的问题是什么?您提供了代码,但它不是 minimal reproducible example
  • 所以你要找的是组合。看看itertools.combinations

标签: python list algorithm


【解决方案1】:

您使用内置模块中的combinations() itertools 来做到这一点:

from itertools import combinations

lst = [4, 8, 7, 1]

print(list(combinations(lst, 2)))

输出:

[(4, 8), (4, 7), (4, 1), (8, 7), (8, 1), (7, 1)]

【讨论】:

    【解决方案2】:
    list1 = [4, 8, 7, 1]
    list2 = [(x, y) for i, x in enumerate(list1) for y in list1[i + 1:]]
    print(list2)  # [(4, 8), (4, 7), (4, 1), (8, 7), (8, 1), (7, 1)]
    

    【讨论】:

      【解决方案3】:

      你也可以这样做:

      l=[4,8,7,1]
      
      result = [(l[i],l[j]) for i in range(len(l)) for j in range(i+1,len(l))]
      
      

      【讨论】: