两个非连续项目的组合

fab*_*aia 5 python combinations list

给定一个列表,我如何获得两个非连续项之间的所有组合?

例如,输入[1, 2, 3, 4, 5]如何获得输出[(1,3), (1,4), (1,5), (2,4), (2,5), (3,5)]

我不感兴趣的(1,2),(2,3),(3,4)(4,5)因为他们是连续的(即彼此相邻)在列表中,但一切我很感兴趣.

在Python中最常用的方法是什么?

Ste*_*ann 5

一个简单的列表理解:

>>> lst = [1, 2, 3, 4, 5]
>>> [(a, b) for i, a in enumerate(lst) for b in lst[i+2:]]
[(1, 3), (1, 4), (1, 5), (2, 4), (2, 5), (3, 5)]
Run Code Online (Sandbox Code Playgroud)